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.

November 2, 20264 min read

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.

World map with lines from a server in Mumbai to North America. Docker Hub, Hugging Face and Coinbase answer from eastern North America, and Jev from near San Francisco, so their answers travel back across the world. PyPI, jsDelivr and unpkg answer from Mumbai itself.
A server near Mumbai answers every request. For some services the answer still comes from North America.

Mumbai against San Francisco, service by service

Typical response time from our servers in Mumbai and San Francisco
ServiceExtra wait from MumbaiMumbaiSan Francisco
ChatGPT API *+398 ms1,326 ms928 ms
Claude API *+178 ms1,251 ms1,073 ms
Grok API *+167 ms2,641 ms2,474 ms
Mistral API *None326 ms333 ms
DeepSeek API *None589 ms728 ms
crates.io+1,110 ms1,555 ms445 ms
Cloudflare Clef+364 ms647 ms283 ms
GitLab API+242 ms484 ms242 ms
OpenAI Decisions API+192 ms312 ms120 ms
Jev+188 ms287 ms99 ms
Docker Hub+128 ms256 ms128 ms
Hugging Face API+128 ms215 ms87 ms
Coinbase Exchange API+125 ms225 ms100 ms
Stripe API+118 ms190 ms72 ms
jsDelivrNone9 ms43 ms
PyPINone11 ms68 ms
Go module proxyNone16 ms52 ms
esm.shNone25 ms27 ms
unpkgNone28 ms30 ms
Maven CentralNone33 ms34 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.

Test my API or website

No account required. Takes about 30 seconds.