Learn
Hosting in India? Your server waits longer for the APIs it calls
We time 20 AI APIs, developer APIs and package registries every day from Mumbai and San Francisco.
From our server in Mumbai, 12 of the 20 took longer to answer than from San Francisco. ChatGPT took 398 ms longer to start answering, Stripe's API 118 ms longer and crates.io 1.1 seconds longer. The other 8 answered just as fast.

Mumbai against San Francisco, service by service
| Service | Extra wait from Mumbai | Mumbai | San Francisco |
|---|---|---|---|
| ChatGPT API * | +398 ms | 1,326 ms | 928 ms |
| Claude API * | +178 ms | 1,251 ms | 1,073 ms |
| Grok API * | +167 ms | 2,641 ms | 2,474 ms |
| Mistral API * | None | 326 ms | 333 ms |
| DeepSeek API * | None | 589 ms | 728 ms |
| crates.io | +1,110 ms | 1,555 ms | 445 ms |
| Cloudflare Clef | +364 ms | 647 ms | 283 ms |
| GitLab API | +242 ms | 484 ms | 242 ms |
| OpenAI Decisions API | +192 ms | 312 ms | 120 ms |
| Jev | +188 ms | 287 ms | 99 ms |
| Docker Hub | +128 ms | 256 ms | 128 ms |
| Hugging Face API | +128 ms | 215 ms | 87 ms |
| Coinbase Exchange API | +125 ms | 225 ms | 100 ms |
| Stripe API | +118 ms | 190 ms | 72 ms |
| jsDelivr | None | 9 ms | 43 ms |
| PyPI | None | 11 ms | 68 ms |
| Go module proxy | None | 16 ms | 52 ms |
| esm.sh | None | 25 ms | 27 ms |
| unpkg | None | 28 ms | 30 ms |
| Maven Central | None | 33 ms | 34 ms |
* For the AI APIs, the time until the answer starts to appear, not the full response. Daily checks up to 20 October 2026, each on a new connection. Our San Francisco server reaches PyPI, jsDelivr and the Go module proxy by a longer road than most Bay Area servers, so its numbers for them run high, and we left GitHub and Wikipedia out for the same reason. Both servers are in data centres; home and mobile connections add their own delay.
AI APIs: ChatGPT waits longest from Mumbai
Three of the five AI APIs start answering later from Mumbai. DeepSeek starts 139 ms sooner there than in San Francisco, and Mistral just as soon. Our Mumbai page ranks every AI API we measure from there.
A server nearby, an answer from far away
For 11 of the 12 slower services, Mumbai reached a server in 2 or 3 ms and set up the secure connection in under 12 ms, as quickly as San Francisco. The time went into the wait after that: 243 ms against 108 ms for Docker Hub, 200 against 73 for Hugging Face, 292 against 75 for Jev.
That nearby server belongs to the service's CDN. It doesn't hold the answer, so it passes each request on to the service's own servers, which are closer to San Francisco than to Mumbai, and waits for the reply.
Stripe: three trips to a server 60 ms away
Stripe's API is the one case where the distance shows from the first step. From Mumbai, connecting took 63 ms, the secure connection 66 ms and the wait 61 ms: three round trips to the nearest Stripe server, about 60 ms away. San Francisco paid 22 to 27 ms for each of the same steps.
Big responses stretch the gap
crates.io has the largest gap, and size is the reason. Its reply for the serde crate is about 440 KB. Mumbai waited 203 ms for the first byte and 735 ms for the rest; San Francisco took 89 ms and 326 ms. A new connection sends a large response in batches and waits for each one to be acknowledged, so Mumbai pays the long trip to wherever the data comes from again and again.
The slowest requests are slower still
From Mumbai, 5% of requests to Coinbase's exchange API took longer than 809 ms, against 109 ms from San Francisco. For OpenAI's Decisions API, 5% took longer than 1,235 ms, against 344 ms.
Package registries and CDNs with no gap
PyPI, jsDelivr, the Go module proxy, unpkg, esm.sh and Maven Central answered Mumbai in 9 to 33 ms. They serve the same files to everyone, so a server near Mumbai can keep a copy and answer on its own. PyPI and crates.io both sit behind Fastly, and from Mumbai one took 11 ms and the other 1,555 ms. The wait depends on where the answer is stored, and being in India only costs you when that place is far away.
What to do if your server is in India
- Reuse connections. A new connection to Stripe costs Mumbai three round trips; a reused one costs one. Check that your HTTP client keeps connections open between calls.
- Send independent calls together. Three 200 ms calls take 600 ms one after another and about 200 ms at the same time.
- Cache what doesn't change. Package installs and image pulls repeat the same downloads, and a registry mirror or build cache next to your server turns crates.io's 1.6 seconds into a local read.
- Pick a region in India when a service offers one. Many database and hosting services let you choose where your project runs.
- Set timeouts from Mumbai's slow requests. A timeout based on San Francisco's numbers will cut off requests that are normal from Mumbai.
Would you like to test your own API or website?
Run a quick check from Mumbai, San Francisco and four other cities, and see where the time went in each one.
No account required. Takes about 30 seconds.