Firestore pricing

This document explains Firestore pricing details.

If you pay in a currency other than USD, the prices listed in your currency on Cloud Platform SKUs apply.

Pricing overview

When you use Firestore, you are charged for the following:

  • The number of documents you read, write, and delete.
  • The number of index entries matched by aggregation queries. You are charged one document read for each batch of up to 1000 index entries matched by the query.
  • The amount of storage that your database uses, including overhead for metadata and indexes.
  • The amount of network bandwidth that you use.

Storage and bandwidth usage are calculated in gibibytes (GiB), where 1 GiB = 230 bytes. All charges accrue daily.

The following sections provide details about how you are charged for your Firestore usage.

Free quota

Firestore offers free quota that allows you to get started with your (default) database at no cost. The free quota amounts are listed below. If you need more quota, you must enable billing for your Google Cloud project.

Quotas are applied daily and reset around midnight Pacific time.

Only the (default) database qualifies for the free quota.

Free tier Quota
Stored data 1 GiB
Document reads 50,000 per day
Document writes 20,000 per day
Document deletes 20,000 per day
Outbound data transfer 10 GiB per month

The following operations and features do not include free usage. You must enable billing to use these features:

  • Usage of named (non-default) databases
  • TTL deletes
  • PITR data
  • Backup data
  • Restore operations

For more information about how these features are billed, see Storage pricing.

Pricing by location

The following table lists pricing for reads, writes, deletes, and storage for each Firestore location:

If you pay in a currency other than USD, the prices listed in your currency on Cloud Platform SKUs apply.

No free quota for named databases

To create a named (non-default) database, you must enable billing.

There's no additional cost to you for creating or deleting the named databases, but those databases do not qualify for the free quota. Instead, you will be charged on usage incurred on those named databases.

Reads, writes, and deletes

You are charged for each document read, write, and delete that you perform with Firestore.

Charges for writes and deletes are straightforward. For writes, each set or update operation counts as a single write.

Charges for reads have some nuances that you should keep in mind. The following sections explain these nuances in detail.

Aggregation queries

For aggregation queries such as count(), sum(), and avg(), you are charged one document read for each batch of up to 1000 index entries matched by the query. For aggregation queries that match 0 index entries, there is a minimum charge of one document read.

For example, count() operations that match between 0 and 1000 index entries are billed for one document read. For a count() operation that matches 1500 index entries, you are billed 2 document reads.

Listening to query results

Firestore allows you to listen to the results of a query and get realtime updates when the query results change.

When you listen to the results of a query, you are charged for a read each time a document in the result set is added or updated. You are also charged for a read when a document is removed from the result set because the document has changed. (In contrast, when a document is deleted, you are not charged for a read.)

Billing of listeners in the mobile and web SDKS also depends on whether offline persistence is enabled or not:

  • If offline persistence is enabled and the listener is disconnected for more than 30 minutes (for example, if the user goes offline), you will be charged for reads as if you had issued a brand-new query.

  • If offline persistence is disabled, you will be charged for reads as if you had issued a brand-new query whenever the listener disconnects and reconnects.

Managing large result sets

Firestore has several features to help you manage queries that return a large number of results:

  • Cursors, which allow you to resume a long-running query.
  • Page tokens, which help you paginate the query results.
  • Limits, which specify how many results to retrieve.
  • Offsets, which allow you to skip a fixed number of documents.

There are no additional costs for using cursors, page tokens, and limits. In fact, these features can help you save money by reading only the documents that you actually need.

However, when you send a query that includes an offset, you are charged a read for each skipped document. For example, if your query uses an offset of 10, and the query returns 1 document, you are charged for 11 reads. Because of this additional cost, you should use cursors instead of offsets whenever possible.

Queries other than document reads

For queries other than document reads, such as a request for a list of collection IDs, you are billed for one document read. If fetching the complete set of results requires more than one request (for example, if you are using pagination), you are billed once per request.

Minimum charge for queries

There is a minimum charge of one document read for each query that you perform, even if the query returns no results.

Firestore Security Rules

For mobile and web client libraries, if your Firestore Security Rules use exists(), get(), or getAfter() to read one or more documents from your database, you are charged for additional reads as follows:

  • You are charged for reads that are necessary to evaluate your Firestore Security Rules.

    For example, if your rules refer to three documents, but Firestore only has to read two of those documents to evaluate your rules, you will be charged for two additional reads for the dependent documents.

    You are only charged one read per dependent document even if your rules refer to that document more than once.

  • You are charged for rule evaluation only once per request.

    As a result, it can cost less to read multiple documents than to read documents one at a time, because reading multiple documents requires fewer requests.

  • When you listen to the results of a query, you are charged for rule evaluation in all of the following cases:

    • When you issue the query.
    • Each time the query results are updated.
    • Any time the user's device goes offline, then comes back online.
    • Any time you update your rules.
    • Any time you update the dependent documents in your rules.

Database storage size

You are charged for the amount of data that you store in Firestore, including storage overhead. The amount of overhead includes metadata, automatic indexes, and composite indexes.

Each document stored in Firestore requires the following metadata:

  • The document ID, including the collection ID and the document name.
  • The name and value of each field. Because Firestore is schemaless, the name of each field in a document must be stored with the field value.
  • Any single-field and composite indexes that refer to the document. Each index entry contains the collection ID; any number of field values, depending on the index definition; and the document name.

Storage costs are in GiB/month and calculated daily. Firestore measures the database size daily. Over the period of a month, these sample points are averaged to calculate the database storage size. This average value is multiplied by the unit price of storage (GiB-month)

Learn how Firestore storage is calculated at Storage Size Calculations.

PITR data

If you enable PITR, you are charged for the storage of PITR data. Most customers will find that the overall cost of PiTR data storage is similar to the storage cost of the database.

Storage costs for PITR are in GiB/month and calculated daily. Firestore measures the database size daily. Over the period of a month, these sample points are averaged to calculate the database storage size. This average value is multiplied by the unit price of PITR (GiB-month).

For example, if the average size of your database during a month is 1 GiB and PITR is enabled for the whole month, then the billable PITR data size is 1 GiB as well.

Minimum billing: You may be charged up to 1 day of PITR storage cost even if you disable PITR within a day after enablement.

Backup data and restore operations

If you enable backups, you are charged for the storage of your database backups. The storage size for a backup is equal to the storage size of the database when you took the backup.

Storage costs for backups are in GiB/month. Over the period of a month, the number of days for which each backup is retained, averaged over the month is also calculated. The cost of each backup is calculated using the storage size of the backup multiplied by the proportion of the month the backup is retained, multiplied by the unit price.

When you perform a restore operation, Firestore measures the size of the backup for the restore operation. The size of the backup is multiplied by the unit price of restore operations (GiB).

Network bandwidth

You are charged for the network bandwidth used by your Firestore requests, as shown in the following sections. The network bandwidth cost of a Firestore request depends on the request’s response size, the location of your Firestore database, and the destination of the response.

Firestore calculates response size based on a serialized message format. Protocol overhead, such as SSL overhead, does not count towards network bandwidth usage. Requests denied by your Firestore Security Rules do not count towards network bandwidth usage.

To learn how much network bandwidth you have used, you can use the Google Cloud console to export your billing data to a file.

General network pricing

For requests that originate within Google Cloud Platform (for example, from an application running on Google Compute Engine), you are charged as follows:

Traffic type Price
Inbound data transfer Free
Data transfer within a region Free
Data transfer between regions in the same multi-region Free
Data transfer between regions within the US (per GiB) $0.01 (first 10 GiB per month are free)
Data transfer between regions, not including traffic between US regions Google Cloud Platform outbound internet data transfer rates

If you pay in a currency other than USD, the prices listed in your currency on Cloud Platform SKUs apply.

Internet data transfer rates

You will be charged for internet data transfer for the following:

  • Google Cloud requests between regions, not including traffic between US regions
  • Requests from outside of Google Cloud (for example, from a user's mobile device)

If you pay in a currency other than USD, the prices listed in your currency on Cloud Platform SKUs apply.

Monitoring usage

To learn how to monitor your Firestore usage, see Monitoring usage.

Managing spending

To manage your spending, set monthly budgets and alerts.

Google Cloud budgets and alerts

Google Cloud allows you to set a monthly budget for all Google Cloud services. Use a monthly budget to monitor your overall Google Cloud costs, including your network bandwidth costs for Firestore. After you set a budget, you can set alerts, which cause you to receive email notifications as your costs grow closer to your budget.

Follow these instructions to set a monthly budget and create alerts in the Google Cloud console.

Pricing example

To see how Firestore billing costs accrue in a real-world sample app, see the Firestore billing example.

What's next

Request a custom quote

With Google Cloud's pay-as-you-go pricing, you only pay for the services you use. Connect with our sales team to get a custom quote for your organization.
Contact sales