Bay Geeks logoTampa Bay IT Support ยท Since 2004

Developers

Speed Test API

The public endpoints behind our internet speed test, documented for anyone, or any agent, who wants to call them.

Our speed test measures latency, download and upload speed between your connection and the nearest Cloudflare data center. The four endpoints it uses are open: no key, no sign-up.

Endpoints

GET /ping

An empty 204 response. Time repeated calls to measure latency and jitter.

GET /meta

What the answering data center knows about your connection. Any field can be null.

{
  "colo": "TPA",
  "city": "St. Petersburg",
  "region": "Florida",
  "country": "US",
  "isp": "Example Broadband",
  "asn": 64500,
  "ip": "203.0.113.7",
  "protocol": "HTTP/2",
  "tls": "TLSv1.3"
}

GET /down?bytes=N

Streams N bytes of random, incompressible data as application/octet-stream. Without a valid bytes value you get 1 MiB; the most one request returns is 16 MiB. HEAD returns the headers only.

POST /up

Reads and discards the request body, then answers {"bytes": N} with the number of bytes received. Bodies over 8 MiB are cut off with a 413.

Example

curl -s https://baygeeks.com/speed-test/api/meta
curl -s -o /dev/null -w '%{speed_download}\n' 'https://baygeeks.com/speed-test/api/down?bytes=10000000'
head -c 4000000 /dev/urandom | curl -s --data-binary @- https://baygeeks.com/speed-test/api/up

Limits

  • Rate limit: about 3,000 requests a minute per IP address. Past that, 429 until the minute is up.
  • No cross-site browser calls: a request from another website (an Origin other than https://baygeeks.com, or Sec-Fetch-Site: cross-site) is refused with 403. Server-side clients, scripts and agents are not affected.
  • No caching: every response is no-store, so each measurement reaches the edge.
  • Errors come back as JSON: {"error": "..."}.

Questions

Email support@baygeeks.com. This is a free tool run by a local computer repair company, with no uptime guarantee; please be considerate with automated use.

Call Now Schedule