*Latency* is the time until you receive the response to a request. This guide
gives order-of-magnitude latencies for Merchant API requests. Use these values
to set timeouts and to plan the throughput of your integration.

Most Merchant API requests complete in less than a second. Local and regional
inventory updates might take a few seconds, and some report queries take much
longer.

> [!IMPORTANT]
> **Important:** These latencies are approximate values observed on Google's servers, and they don't include the network latency between your servers and Google. They aren't a service level agreement (SLA) or a guarantee, and they can change at any time without notice.

## Typical latencies

The following table lists approximate latencies by type of request. *Typical
latency* is the **median** : half of the requests complete faster. The
**slowest 1%** of requests take as long as the last column shows, or longer.

| Type of request | Example methods | Typical latency | Slowest 1% of requests |
|---|---|---|---|
| Product reads and writes | [`products.get`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.products/get), [`productInputs.insert`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.productInputs/insert), [`productInputs.patch`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.productInputs/patch), [`productInputs.delete`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.productInputs/delete) | 100 to 600 milliseconds | About 2 seconds |
| Most other requests | [`products.list`](https://developers.google.com/merchant/api/reference/rest/products_v1/accounts.products/list), [`accounts.get`](https://developers.google.com/merchant/api/reference/rest/accounts_v1/accounts/get), [`dataSources.list`](https://developers.google.com/merchant/api/reference/rest/datasources_v1/accounts.dataSources/list), [`aggregateProductStatuses.list`](https://developers.google.com/merchant/api/reference/rest/issueresolution_v1/accounts.aggregateProductStatuses/list) | Less than 1 second | A few seconds |
| Local and regional inventory writes | [`localInventories.insert`](https://developers.google.com/merchant/api/reference/rest/inventories_v1/accounts.products.localInventories/insert), [`regionalInventories.insert`](https://developers.google.com/merchant/api/reference/rest/inventories_v1/accounts.products.regionalInventories/insert), and the corresponding `delete` methods | A few seconds | 10 seconds or more |
| Report queries | [`accounts.reports.search`](https://developers.google.com/merchant/api/reference/rest/reports_v1/accounts.reports/search) | About half a second | 30 seconds or more |

Report queries vary the most. Their latency depends on the report table that
you query and on the amount of data that the query covers. About 1 in 10 report
queries typically takes longer than 2 seconds, and a small fraction can take
longer than a minute.

## Recommendations

- **Set timeouts with headroom.** If you set request timeouts in your client, set them well above the slowest latencies listed in [Typical latencies](https://developers.google.com/merchant/api/guides/latency#typical-latencies). For example, a 60-second timeout leaves ample headroom for most requests, but not for all report queries.
- **Send independent requests in parallel.** Because inventory writes take a few seconds each, sending them one after another limits your throughput. Send independent requests in parallel or use [batch requests](https://developers.google.com/merchant/api/guides/send-multiple-requests). When sending multiple requests, mind your **per-minute** and **daily limits** . For more information, see [Rate quotas](https://developers.google.com/merchant/api/guides/quotas-limits/quotas#rate-quotas).
- **Limit report queries to the data that you need.** Queries that cover large data sets, such as long date ranges, take longer and might time out. If you need large amounts of data, consider using BigQuery. For more information, see [Load Google Merchant Center data into BigQuery](https://docs.cloud.google.com/bigquery/docs/merchant-center-transfer).
- **Retry with exponential backoff.** If a request times out or fails with a transient error, retry it with [exponential backoff](https://developers.google.com/merchant/api/guides/error-handling#implement_exponential_backoff).

## Processing time

For requests that change data, a successful response means that Merchant API
accepted the change, but processing continues after the response. *Processing
time* is the time from the response until the change is visible in other
resources. Processing time isn't part of the latency, and it can be much longer.
For example, it can take a few minutes until the processed product reflects an
inserted product input.

For more information about the final processed state of your data, see the
following guides:

- [Get product information](https://developers.google.com/merchant/api/guides/products/add-manage#get_product_information)
- [Add in-store information to local products](https://developers.google.com/merchant/api/guides/inventories/add-local-inventory)
- [Add regional information to online products](https://developers.google.com/merchant/api/guides/inventories/add-regional-inventory)