Python 2.7 has reached end of supportand will bedeprecatedon January 31, 2026. After deprecation, you won't be able to deploy Python 2.7applications, even if your organization previously used an organization policy tore-enable deployments of legacy runtimes. Your existing Python2.7 applications will continue to run and receive traffic after theirdeprecation date. We recommend thatyoumigrate to the latest supported version of Python.

Quotas

Region ID

TheREGION_ID is an abbreviated code that Google assignsbased on the region you select when you create your app. The code does notcorrespond to a country or province, even though some region IDs may appearsimilar to commonly used country and province codes. For apps created after February 2020,REGION_ID.r is included in App Engine URLs. For existing apps created before this date, the region ID is optional in the URL.

Learn moreabout region IDs.

This document lists the quotas and system limits that apply to App Engine.

  • Quotas have default values, but you can typically request adjustments.
  • System limits are fixed values that can't be changed.

Google Cloud uses quotas to help ensure fairness and reducespikes in resource use and availability. A quota restricts how much of aGoogle Cloud resource your Google Cloud project can use. Quotasapply to a range of resource types, including hardware, software, and networkcomponents. For example, quotas can restrict the number of API calls to aservice, the number of load balancers used concurrently by your project, or thenumber of projects that you can create. Quotas protect the community ofGoogle Cloud users by preventing the overloading of services. Quotas alsohelp you to manage your own Google Cloud resources.

The Cloud Quotas system does the following:

In most cases, when you attempt to consume more of a resource than its quotaallows, the system blocks access to the resource, and the task thatyou're trying to perform fails.

Quotas generally apply at the Google Cloud projectlevel. Your use of a resource in one project doesn't affectyour available quota in another project. Within a Google Cloud project, quotasare shared across all applications and IP addresses.

For more information, see theCloud Quotas overview.

There are alsosystem limits on App Engine resources. System limits can't be changed.

An App Engine application can consume resources up to certain quotas. You can view your application's daily consumption on the Google Cloud consoleQuota Details page.

Types of quotas

The following types of quotas apply to App Engine applications:

  • Free quotas give your application an amount of each resource for free. The details on free quotas can be found under theresources section on this page. After your application exceeds a free quota, you will bebilled for any additional use of that resource.

    Only the App Engine standard environment provides free quotas.

  • Daily quotas protect the integrity of the App Engine system by ensuring that no single app over-consumes a resource to the detriment of other apps. If you go above these limits, you'll get an error. Daily quotas are refreshed daily at midnight Pacific time.
  • Per-minute quotas protect your application from consuming all of its resources in very short periods of time, and prevent other applications from monopolizing a given resource. If your application consumes a resource too quickly and depletes a per-minute quota, the word "Limited" appears next to the appropriate quota on theQuotas page in the Google Cloud console. Requests for resources that reach their per-minute maximum are denied.

Project owners andbilling administrators can enable billing for a project.

For details about what happens when a quota is exceeded and how to handlequota overage conditions, seeWhen a resource is depleted.

Tip: The maximum per-minute quotas accommodate high traffic levels, enough to handle a spike in traffic from your site getting mentioned in news stories. If you believe a particular quota does not meet this requirement,submit feedback in the issue tracker. Note that filing feedback is not a request for increasing your quota, but it will help us understand which quota is potentially too low for general use cases.

If you're expecting extremely high traffic levels, or for some reason your app requires particularly high quotas (for example, because of a significant product launch or large load tests), we recommend that you sign up for asupport package.

How resources are replenished

App Engine tracks your application's resource usage against system quotas.App Engine resets all resource measurements at the beginning of each calendar day (exceptfor Stored Data, which always represents the amount of datastore storage in use).

Daily quotas are replenished daily at midnight Pacific time. Per-minute quotas are refreshed every 60 seconds.

When a resource is depleted

When an application consumes all of an allocated resource, the resource becomes unavailable untilthe quota is replenished. This may mean that your application will not work until the quota isreplenished.

For resources that are required to initiate a request, when the resource is depleted, App Engine by default returns an HTTP403 or503 error code for the request instead of calling a requesthandler. This behavior applies to theInstance hours resource.

Tip: You can configure your application to serve a custom error page when your application exceeds a quota. For details, see the configuration file reference for Python (2.7,3), Java, Go, PHP (5.5,7), orNode.js.

For all other resources, when the resource is depleted, an attempt in the application to consumethe resource results in an exception. This exception can be caught by the application and handled,such as by displaying a friendly error message to the user. In the Python API, this exception isapiproxy_errors.OverQuotaError. In the API for Java, this exception iscom.google.apphosting.api.ApiProxy.OverQuotaException. In the Go API, theappengine.IsOverQuota function reports whether an error represents an API call failuredue to insufficient available quota.

The following example illustrates how to catch theOverQuotaError, which may beraised by theSendMessage() method if an email-related quota has been exceeded:

try:mail.SendMessage(to='test@example.com',from='admin@example.com',subject='Test Email',body='Testing')exceptapiproxy_errors.OverQuotaError,message:# Log the error. logging.error(message)# Display an informative message to the user.self.response.out.write('The email could not be sent. ''Please try again later.')

Is your app exceeding the default limits? You cancontact Cloud Customer Care to request higher throughput limits. If you need a higher mail quota, you canuse SendGrid to send email.

Resources

An application may use the following resources, subject to quotas. Resources measured againstbillable limits are indicated with "(billable)." Resource amounts represent an allocation over a 24hour period.

The cost of additional resources is listed on thePricing page.

Services, versions, and instances

The maximum number of services and versions that you can deploy depends on yourapp's pricing. Both the flexible environment and the standard environment sharethe same limits for services and versions. For example, if you have standardversions and flexible versions in the same app, those versions count towards thesame limit.

LimitFree appPaid app
Maximum services per app5210
Maximum versions per app15210

There is also a limit to the number of instances for each service with basic ormanual scaling:

Maximum instances per manual/basic scaling version
Free appPaid app USPaid app EU
2025 (200 forus-central)25

There is also a limit to the number of instances across standard versions that can be running per project and region. The service'sinstance class determines which limit is applied and the contribution of an instance of that service to the quota usage. For example, 1 F4 instance counts as 4 normalized frontend instances.

You can view your instance count quota consumption inthe IAM Quotas page.

DescriptionLimitCan be increased
Maximum number of frontend instances per project and region measured over a 1 minute periodDepends on selected region. This limit might be greater in high-capacity regions or lower in recently opened regions.Yes
Maximum number of backend instances per project and region measured over a 1 minute periodDepends on selected region. This limit might be greater in high-capacity regions or lower in recently opened regions.Yes

Note: You can follow the steps outlined inthis page to request higher limits.

There is also a limit to the number of characters in the URL of yourapplication.
DescriptionLimit
Maximum characters in Project URL forVERSION-dot-SERVICE-dot-PROJECT_ID URL63

Default Cloud Storage bucket

The Default Cloud Storage bucket has a free quota for daily usage as shown below. Youcreate this free default bucket in the Google Cloud consoleApp Engine settings page for your project.

The following quotas apply specifically to use of the default bucket. Seepricing for Cloud Storage Multi-Regional buckets for a description of these quotas.

ResourceDefault limit
Default Cloud Storage Bucket Stored DataFirst 5 GB free; no maximum
Default Cloud Storage BucketClass A OperationsFirst 20,000 ops/day free; no maximum
Default Cloud Storage BucketClass B OperationsFirst 50,000 ops/day free; no maximum
Default Cloud Storage Bucket Network EgressFirst 1 GB free; no maximum

Blobstore

The following quotas apply specifically to use of the blobstore.

Blobstore stored data
The total amount of data stored in the blobstore. Available for both paid and free apps.
ResourceDefault limit
Blobstore Stored DataFirst 5 GB free; no maximum

Code and static data storage

Static data limit
In all languages except Go, no single static data file can be larger than 32MB. The limit for Go is 64MB.
Total storage
The storage quota applies to the total amount of code and static data stored by all versions of your app. The total stored size of code and static files is listed in the Main Dashboard table. Individual sizes are displayed on the Versions and Backends screens respectively. Apps will be charged $ 0.026 per GB per month for any code and static data storage that exceeds 1 GB.
US/Europe
ResourceCost
Code & Static Data Storage - First 1 GBFree
Code & Static Data Storage - Exceeding 1 GB0.026/GB/month
Asia (Japan)
ResourceCost
Code & Static Data Storage - First 1 GBFree
Code & Static Data Storage - Exceeding 1 GB0.023/GB/month">

Firestore in Datastore mode (Datastore)

TheStored Data (billable) quota refers to all data stored for the application inDatastore and Blobstore. Other quotas in the "Datastore" section of theQuotaDetails screen in the Google Cloud console refer specifically to the Datastore service.

Stored data (billable)

The total amount of data stored in datastore entitiesand corresponding indexes and the Blobstore.

It's important to note that data stored in the datastore may incur significant overhead. This overhead depends on the number and types of associated properties, and includes space used by built-in and custom indexes. Each entity stored in the datastore requires the following metadata:

  • The entity key, including the kind, the ID or key name, and the keys of the entity's ancestors.
  • The name and value of each property. Since the datastore is schemaless, the name of each property must be stored with the property value for any given entity.
  • Any built-in and custom index rows that refer to this entity. Each row contains the entity kind, any number of property values depending on the index definition, and the entity key.
Number of indexes
The number of Datastore indexes that exist for the application. This includes indexes that were created in the past and no longer appear in the application's configuration but have not been deleted. See theDatastore limits page for additional details about limits.
Write operations
The total number of Datastore write operations.
Read operations
The total number of Datastore read operations.
Small operations
The total number of Datastore small operations. Small operations include calls to allocate Datastore IDs or keys-only queries.
ResourceDefault limit
Stored Data (billable)1 GiB free; no maximum.
Beyond free quota, billing rates apply.
Number of Indexes200
Entity Reads50,000 free; no maximum.
Beyond free quota, billing rates apply.
Entity Writes20,000 free; no maximum.
Beyond free quota, billing rates apply.
Entity Deletes20,000 free; no maximum.
Beyond free quota, billing rates apply.
Small OperationsUnlimited

Note: Datastore operations generated by theDatastore Admin andDatastore Viewer count against your application quota.

Deployments

In each App Engine application, you can deploy up to 10,000 times per day.

When you deploy, Cloud Build builds a container image, and stores the image in theArtifact Registry. You will incur charges if thetotal storage space consumed by the images exceeds thefree tier.

Caution: Container Registry is deprecated. Effective March 18, 2025, Container Registry is shut down, and writing images to Container Registry is unavailable. For details on the deprecation and how to migrate to Artifact Registry, seeContainer Registry deprecation.

Files

The following quota applies to the total number of app deployment files.

FilesMaximum
Default files per app10,000 files
Contact Support to request an increase.

Instance hours

Instance usage is billed by instance uptime, at a given hourly rate.

There are separate free quotas for "F" and "B"instance classes (also known as"frontend" and "backend" instance classes). Note that when you use App EngineServices, the service's instance class determineswhich quota applies.

ResourceFree Quota
F1 instances28 free instance hours per day
B1 instances9 free instance hours per day

Accrual of instance hours begins when an instance starts and ends as describedbelow, depending on thetype of scalingyou specify for the instance:

  • Basic or automatic scaling: accrual ends fifteen minutes after an instance finishes processing its last request.
  • Manual scaling: accrual ends fifteen minutes after an instance shuts down.

If the number of idle instances created by App Engine exceeds the maximum you specifyin the Performance Settings tab of the Google Cloud console, the excess instances do not accrueinstance hours.

Important: When youview your bill, you will not see the names of theindividual instance classes in your billing line items. Instead, you see instance hours from the"B" classes reported as "Backend Instances", and instance hours from the "F" classes reported as"Frontend Instances". The bill will apply the appropriate multiple of instance hours for eachinstance class you use. For example, if you use an F4 instance for one hour, you see"Frontend Instance" billing for four instance hours at the F1 rate.

Logs

The Logs API is metered when log data is retrieved.

The logs ingestion allotment refers to request logs and application logs data for anapplication. Logging for App Engine apps is provided by Google Cloud Observability. SeeGoogle Cloud Observability pricing for more information on rates andlimits.

Mail

Mail API consumption is available to view atthe IAM Quotas page.

Note: To view an application's quota consumption on the IAM Quotas page, ensure that theApp Engine Reporting Service is enabled for the project. If you can't enable the service, please check your permissions and theconstraints/serviceuser.services org policy constraint.

Note: You can follow the steps outlined inthis page to request higher limits.

App Engine bills for email use "by message," counting each emailto each recipient. For example, sending one email to ten recipients counts as 10 messages.

Messages sent to non-admins
The total number of messages sent by the application to non-application admins.
Messages sent to admins
The total number of messages to application admins that have been sent by the application. The total size limit for each admin email, including headers, attachments, and body is 16KB.
Message body data sent
The amount of data sent in the body of email messages.
Attachments sent
The total number of attachments sent with email messages.
Attachment data sent
The amount of data sent as attachments to email messages.
ResourceDefault daily limitMaximum rate
Recipients emailed100 messages8 messages/minute
Admins emailed5,000 mails24 mails/minute
Message body data sent60 MB340 KB/minute
Attachments sent2,000 attachments8 attachments/minute
Attachment data sent100 MB10 MB/minute

You can add up to a maximum of 50 authorized senders for the Mail API.

Sending mail above your daily mail quota

If your app needs higher quotas for sending mail, you can use a third-party mail provider, such asSendGrid,Mailjet, orMailgun.

Memcache

You can view Memcache API consumption onthe IAM Quotas page. Memcache API consumption is specified in centiMemcache compute units (MCU), which are 1/100ths of an MCU. You can use up to millions of centi-MCUs.

Resource or API callDescriptionSystem Limit
Shared Centi Memcache Compute Units Per Region Per MinuteFor each project per region and minute, the available centi-MCUs, which are 1/100ths of anMemcache Compute Unit. Applicable only forShared Memcache.90,000,000 centi-MCUs/min/project/region

Requests

Outgoing bandwidth (billable)

The amount of data sent by the application in response to requests.

This includes:

  • data served in response to both secure requests and non-secure requests by application servers, static file servers, or the Blobstore
  • data sent in email messages
  • data in outgoing HTTP requests sent by the URL fetch service.
Incoming bandwidth

The amount of data received by the application from requests. Each incoming HTTP request can be no larger than 32MB.

This includes:

  • data received by the application in secure requests and non-secure requests
  • uploads to the Blobstore
  • data received in response to HTTP requests by the URL fetch service
Secure outgoing bandwidth
The amount of data sent by the application over a secure connection in response to requests.
Secure incoming bandwidth
The amount of data received by the application over a secure connection from requests.
Note: Outgoing bandwidth is a billable resource, which includes HTTP/HTTPS requests. The first 1 GB of outgoing bandwidth per day is free. There is no daily limit or maximum quota for both outgoing or incoming bandwidth.

Search

Free quotas for Search are listed in the table below. Refer to theJava, Python, andGo documentation for a detailed description of each type of Search call.

Search API resources are charged according to the rates on thepricing schedule.

Resource or API callFree Quota
Total storage (documents and indexes)0.25 GB
Queries1000 queries per day
Adding documents to indexes0.01 GB per day

The application console quota section displays a raw count of API requests.Note that when indexing multiple documents in a singlecall, the call count is increased by the number of documents.

The Search API imposes these limits to ensure the reliability of the service:

  • 100 aggregated minutes of query execution time per minute,within an app and an index.
  • 15,000 Documents added/deleted per minute
In addition, there is a limit of 10GB storage perindex. When an app tries to exceed this amount, an insufficient quota error is returned.This limit may be increased to up to 200GB by submitting a request from theGoogle Cloud consoleApp Engine Search page.

Note: Although these limits are enforced by the minute,the Google Cloud console displays the daily totals for each. Customers withStandard,Enhanced, or Premium support can request higher throughput limits by contactingtheir support representative.

Task Queue

When a task executes, its associated requests count toward the applicationrequest quotas

These limits apply to all task queues:

ResourceDaily limitMaximum rate
Task Queue management calls (using the Google Cloud console)10,000n/a
ResourceDefault limit
Maximum number of queues (includes both push and pull queues but not the default queue)100 queues.

Note: Once a task has been executed or deleted, the storage it uses is freed. Your storage quota is updated at regular intervals and might not show the reclaimed space immediately. See thePython,Java, orGo, orPHP documentation for more details.

The following limits apply to task queues according to their type:

Push Queue Limits
Maximum task size100KB
Queue execution rate500 task invocations per second per queue
Maximum countdown/ETA for a task30 days from the current date and time
Maximum number of tasks that can be added in a batch100 tasks
Maximum number of tasks that can be added in a transaction5 tasks
Default maximum number of task queues100 queues. Contact Support to request an increase.

Cron

The following quotas apply specifically to Cron jobs.

Cron jobs
Number of cron jobs.
ResourceDefault limit
Cron job250 cron jobs

URL Fetch

URL Fetch API calls
The total number of times the application accessed the URL fetch service to perform an HTTP or HTTPS request.
URL Fetch data sent
The amount of data sent to the URL fetch service in requests.
URL Fetch data received
The amount of data received from the URL fetch service in responses. This also counts toward the Incoming Bandwidth quota.
ResourceDaily limitMaximum rate
UrlFetch API calls860,000,000 calls660,000 calls/minute
UrlFetch data sent4.5 TB3,600 MB/minute
UrlFetch data received4.5 TB3,600 MB/minute

Networking limits

The following networking limits apply to App Engine:
  • Outbound connections per second per instance: 500 (cannot be increased)
  • Outbound DNS resolutions per second per instance: 100 (cannot be increased)
  • Maximum packets per second per instance: 80,000
  • Maximum bits per second per instance: 100,000,000

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-15 UTC.