The REGION_ID is an abbreviated code that Google assigns
based on the region you select when you create your app. The code does not
correspond to a country or province, even though some region IDs may appear
similar 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 more about region IDs.
This document lists the quotas and system limits that apply to App Engine.
Google Cloud uses quotas to help ensure fairness and reduce spikes in resource use and availability. A quota restricts how much of a Google Cloud resource your Google Cloud project can use. Quotas apply to a range of resource types, including hardware, software, and network components. For example, quotas can restrict the number of API calls to a service, the number of load balancers used concurrently by your project, or the number of projects that you can create. Quotas protect the community of Google Cloud users by preventing the overloading of services. Quotas also help 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 quota allows, the system blocks access to the resource, and the task that you're trying to perform fails.
Quotas generally apply at the Google Cloud project level. Your use of a resource in one project doesn't affect your available quota in another project. Within a Google Cloud project, quotas are shared across all applications and IP addresses.
For more information, see the Cloud Quotas overview.
There are also system 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 console Quota Details page.
The following types of quotas apply to App Engine applications:
Only the App Engine standard environment provides free quotas.
Project owners and billing administrators can enable billing for a project.
For details about what happens when a quota is exceeded and how to handle quota overage conditions, see When 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 a
support package.
App Engine tracks your application's resource usage against system quotas. App Engine resets all resource measurements at the beginning of each calendar day (except for 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 an application consumes all of an allocated resource, the resource becomes unavailable until the quota is replenished. This may mean that your application will not work until the quota is replenished.
For resources that are required to initiate a request, when the resource is
depleted, App Engine by default returns an HTTP 403 or
503 error code for the request instead of calling a request
handler. This behavior applies to the Instance 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), or Node.js .
For all other resources, when the resource is depleted, an attempt in the application to consume
the 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 is
apiproxy_errors.OverQuotaError. In the API for Java, this exception is
com.google.apphosting.api.ApiProxy.OverQuotaException. In the Go API, the
appengine.IsOverQuota function reports whether an error represents an API call failure
due to insufficient available quota.
The following example illustrates how to catch the OverQuotaError, which may be
raised by the SendMessage() 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') except apiproxy_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 can contact Cloud Customer Care to request higher throughput limits. If you need a higher mail quota, you can use SendGrid to send email.
When you deploy an application to the App Engine flexible environment, some Google Cloud resources are consumed. You might not be able to modify these resources; however, these resources count against your quota.
For example, you can find your services' instance resource usage under the Compute Engine Resource quotas page.An application may use the following resources, subject to quotas. Resources measured against billable limits are indicated with "(billable)." Resource amounts represent an allocation over a 24 hour period.
The cost of additional resources is listed on the Pricing page.
There are limits to the number of services, versions, and instances (for services with manual scaling) for each application. Both the standard environment and the flexible environment share the same limits for services and versions. For example, if you have standard versions and flexible versions in the same app, those versions count towards the same limit.
| Description | Limit |
|---|---|
| Maximum services per application | 210 |
| Maximum versions per application | 210 * |
| Maximum instances per version with manual scaling | 20 |
*Backend services, such as a backend service that is used by an external HTTP load balancer, can count towards your maximum versions limit.
There is also a limit to the number of characters in the URL of your application.| Description | Limit |
|---|---|
Maximum characters in Project URL for
VERSION-dot-SERVICE-dot-PROJECT_ID URL |
63 |
Not all projects have the above limits. As your use of Google Cloud Platform expands over time, your limits might increase accordingly. If you expect a notable upcoming increase in usage, you can proactively request adjustments from the App Engine Quotas page in the Google Cloud console.
The Default Cloud Storage bucket has a free quota for daily usage as shown below. You create this free default bucket in the Google Cloud console App Engine settings page for your project.
The following quotas apply specifically to use of the default bucket. See pricing for Cloud Storage Multi-Regional buckets for a description of these quotas.
| Resource | Default limit |
|---|---|
| Default Cloud Storage Bucket Stored Data | First 5 GB free; no maximum |
| Default Cloud Storage Bucket Class A Operations | First 20,000 ops/day free; no maximum |
| Default Cloud Storage Bucket Class B Operations | First 50,000 ops/day free; no maximum |
| Default Cloud Storage Bucket Network Egress | First 1 GB free; no maximum |
The following quotas apply specifically to use of the blobstore.
| Resource | Default limit |
|---|---|
| Blobstore Stored Data | First 5 GB free; no maximum |
| Resource | Cost |
|---|---|
| Code & Static Data Storage - First 1 GB | Free |
| Code & Static Data Storage - Exceeding 1 GB | 0.026/GB/month |
| Resource | Cost |
|---|---|
| Code & Static Data Storage - First 1 GB | Free |
| Code & Static Data Storage - Exceeding 1 GB | 0.023/GB/month"> |
The Stored Data (billable) quota refers to all data stored for the application in Datastore and Blobstore. Other quotas in the "Datastore" section of the Quota Details screen in the Google Cloud console refer specifically to the Datastore service.
The total amount of data stored in datastore entities and 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:
| Resource | Default limit |
|---|---|
| Stored Data (billable) | 1 GiB free; no maximum.
Beyond free quota, billing rates apply. |
| Number of Indexes | 200 |
| Entity Reads | 50,000 free; no maximum.
Beyond free quota, billing rates apply. |
| Entity Writes | 20,000 free; no maximum.
Beyond free quota, billing rates apply. |
| Entity Deletes | 20,000 free; no maximum.
Beyond free quota, billing rates apply. |
| Small Operations | Unlimited |
Note: Datastore operations generated by the Datastore Admin and Datastore Viewer count against your application quota.
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 the Artifact Registry. You will incur charges if the total storage space consumed by the images exceeds the free tier.
The following quota applies to the total number of app deployment files.
| Files | Maximum |
|---|---|
| Default files per app | 10,000 files Contact Support to request an increase. |
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 Engine Services, the service's instance class determines which quota applies.
| Resource | Free Quota |
|---|---|
| F1 instances | 28 free instance hours per day |
| B1 instances | 9 free instance hours per day |
Accrual of instance hours begins when an instance starts and ends as described below, depending on the type of scaling you specify for the instance:
If the number of idle instances created by App Engine exceeds the maximum you specify in the Performance Settings tab of the Google Cloud console, the excess instances do not accrue instance hours.
The Logs API is metered when log data is retrieved.
The logs ingestion allotment refers to request logs and application logs data for an application. Logging for App Engine apps is provided by Google Cloud Observability. See Google Cloud Observability pricing for more information on rates and limits.
Mail API consumption is available to view at the IAM Quotas page.
Note: To view an application's quota consumption on the IAM Quotas page, ensure that the App Engine Reporting Service is enabled for the project. If you can't enable the service, please check your permissions and the constraints/serviceuser.services org policy constraint.
Note: You can follow the steps outlined in this page to request higher limits.
App Engine bills for email use "by message," counting each email to each recipient. For example, sending one email to ten recipients counts as 10 messages.
| Resource | Default daily limit | Maximum rate |
|---|---|---|
| Recipients emailed | 100 messages | 8 messages/minute |
| Admins emailed | 5,000 mails | 24 mails/minute |
| Message body data sent | 60 MB | 340 KB/minute |
| Attachments sent | 2,000 attachments | 8 attachments/minute |
| Attachment data sent | 100 MB | 10 MB/minute |
You can add up to a maximum of 50 authorized senders for the Mail API.
If your app needs higher quotas for sending mail, you can use a third-party mail provider, such as SendGrid, Mailjet, or Mailgun.
You can view Memcache API consumption on the IAM Quotas page. Memcache API consumption is specified in centi Memcache compute units (MCU), which are 1/100ths of an MCU. You can use up to millions of centi-MCUs.
| Resource or API call | Description | System Limit |
|---|---|---|
| Shared Centi Memcache Compute Units Per Region Per Minute | For each project per region and minute, the available centi-MCUs, which are 1/100ths of an Memcache Compute Unit. Applicable only for Shared Memcache. | 90,000,000 centi-MCUs/min/project/region |
The amount of data sent by the application in response to requests.
This includes:
The amount of data received by the application from requests. Each incoming HTTP request can be no larger than 32MB.
This includes:
Free quotas for Search are listed in the table below. Refer to the Java, Python, and Go documentation for a detailed description of each type of Search call.
Search API resources are charged according to the rates on the pricing schedule.
| Resource or API call | Free Quota |
|---|---|
| Total storage (documents and indexes) | 0.25 GB |
| Queries | 1000 queries per day |
| Adding documents to indexes | 0.01 GB per day |
The application console quota section displays a raw count of API requests. Note that when indexing multiple documents in a single call, the call count is increased by the number of documents.
The Search API imposes these limits to ensure the reliability of the service:
Note: Although these limits are enforced by the minute, the Google Cloud console displays the daily totals for each. Customers with Standard, Enhanced, or Premium support can request higher throughput limits by contacting their support representative.
When a task executes, its associated requests count toward the application request quotas
These limits apply to all task queues:
| Resource | Daily limit | Maximum rate |
|---|---|---|
| Task Queue management calls (using the Google Cloud console) | 10,000 | n/a |
| Resource | Default 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 the Python, Java, or Go, or PHP documentation for more details.
The following limits apply to task queues according to their type:
The following quotas apply specifically to Cron jobs.
| Resource | Default limit |
|---|---|
| Cron job | 250 cron jobs |
| Resource | Daily limit | Maximum rate |
|---|---|---|
| UrlFetch API calls | 860,000,000 calls | 660,000 calls/minute |
| UrlFetch data sent | 4.5 TB | 3,600 MB/minute |
| UrlFetch data received | 4.5 TB | 3,600 MB/minute |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-06-11 UTC.