An alternative to the Ookla Speedtest API
An alternative to the Ookla Speedtest API you can integrate today
Register, get a key, add one script tag: your page returns download, upload, latency and jitter as a JavaScript object. No sales process, and the price is on the page. Independent since 2011.
30-day free trial · 100 API calls · No credit card · Plans from $49/month
The test above is the one your integration would run. Compare it with any other test you use; the method is explained below.
<script src="https://speedof.me/api/api.js"></script>
<script>
SomApi.account = 'YOUR_API_KEY';
SomApi.domainName = 'yourdomain.com';
SomApi.onTestCompleted = function (r) {
console.log(r.download, r.upload,
r.latency, r.jitter);
};
SomApi.startTest();
</script>useEffect(() => {
const s = document.createElement('script');
s.src = 'https://speedof.me/api/api.js';
s.onload = () => {
SomApi.account = 'YOUR_API_KEY';
SomApi.domainName = 'yourdomain.com';
SomApi.onTestCompleted = setResult;
};
document.body.appendChild(s);
}, []);import { SpeedTest } from '@speedofme/mcp';
const test = new SpeedTest({
apiSecret: process.env.SOM_API_SECRET
});
const r = await test.run();
// r.download, r.upload, r.latency, r.jitter# JSON for scripts and monitors
SOM_API_SECRET=... \
npx -y @speedofme/mcp --json
# past results
npx -y @speedofme/mcp historyIf you were looking for the Speedtest.net API
Most people who search for an Ookla or Speedtest.net API want one of three things: to put a speed test inside their own product, to read the numbers programmatically, or to keep results per user. SpeedOf.Me does all three from a key you issue yourself, today, with the price published. This page is for the people who would rather integrate this afternoon than open a procurement thread.
What you get back
One script tag, one key, one callback. The result object your code receives:
| Property | Type | What it means |
|---|---|---|
| download | number | Average download speed in Mbps |
| upload | number | Average upload speed in Mbps |
| maxDownload, maxUpload | number | Peak speeds in Mbps |
| latency | number | Minimum round trip in milliseconds |
| jitter | number | Latency variance in milliseconds |
| testServer | string | Which test server the browser reached |
| ip_address, hostname, userAgent | string | Who ran it, for your records |
The same object comes back from the Node.js SDK, the CLI prints it as JSON, and the MCP server hands it to AI agents. Every test also appears in your dashboard with date, location and device.
The differences that matter
- Self-serve. Register, copy the key, integrate. No sales call, no licence to negotiate, and the trial needs no card.
- Browser-native. Nothing to install for the person being tested, on any device, including inside a WebView.
- One method everywhere. A single stream of real files over HTTPS to servers on the open internet: the Real-World Speed method. Results read lower than multi-stream indexes that measure to servers inside the ISP's own network, and closer to what an application actually gets. If you are switching, expect the numbers to move; the explainer covers why.
- Headless. You draw the interface, so the test looks like your product rather than ours.
- Same numbers from Node, the CLI and MCP through the
@speedofme/mcppackage, on one secret. - Published pricing. The plans are on the API page, in dollars, with the overage rate next to each.
Switching an existing integration
If your product already shows a speed result, the mapping is direct: download and upload are Mbps, latency is the minimum round trip in milliseconds, and jitter is its variance. Keep your thresholds, run both tests side by side for a week, and re-base the thresholds on what this method reports for the connections that were genuinely fine. Callbacks replace polling: onProgress during the test, onTestCompleted at the end, onError when a test cannot finish.
Hiring platforms, contact centres and ISPs have run their connection checks on this API since 2013.
What it costs
Every completed test is one API call. The 30-day trial includes 100 calls and needs no card. Paid plans start at $49 a month for 1,000 calls (Startup), then $149 for 10,000 (Business) and $599 for 100,000 (Pro); enterprise volume is priced on request. The full table is on the API page.
Questions people ask
Is SpeedOf.Me connected to Ookla or Speedtest.net?
No. SpeedOf.Me is an independent speed test, online since 2011, with its own servers, its own measurement method and its own API since 2013. This page exists because people searching for a Speedtest API often need something they can integrate without a sales process. Ookla and Speedtest are trademarks of Ookla, LLC.
Will the numbers match Speedtest.net?
Not exactly, and that is by design. SpeedOf.Me measures one stream of real files to servers on the open internet, which is what an application experiences; multi-stream tests to servers inside the ISP's network report a higher ceiling. The Real-World Speed page explains the difference and how countries and ISPs rank differently under each.
Can I get an API key without talking to sales?
Yes. Register, activate your email, and the key is in your portal. The 30-day trial includes 100 calls and needs no card; enterprise volume is the only plan that goes through a conversation.
Is there a mobile SDK?
The browser API runs inside a WebView on iOS and Android, and the examples for iOS, Android, Flutter and React Native show the wrapper each platform needs. For servers and scripts there is the Node.js SDK and CLI in the @speedofme/mcp package.
Can I attach results to my own users?
Yes. The callback runs inside your page, so you can store the result against whatever user or session your application already knows. Your dashboard keeps every test as well, with date, location and device.
30-day free trial · 100 API calls · No credit card · Plans from $49/month