FETCHAPI

The hidden costs of a data API: failed calls, retries, failover, empty answers and rate limits

By FetchAPI · 7 October 2026 · 6 min read

The list price is the cost of a call that works. What failed calls, empty answers, failover surcharges and rate limits add, with our own daily health-check numbers and real calls.

A data API's list price is what a call costs when it works. The real cost per useful record also depends on how often calls fail, whether failures are billed, whether an empty answer counts as a success, what automatic failover adds, and how long rate limits make a job take. In our own daily check on 6 October 2026, 227 of 268 endpoints (84.7%) returned data. How a seller treats the other 15% is part of the price.

How often calls fail: our own numbers

Every endpoint in our catalogue is called for real once a day, and an endpoint that fails drops out of the catalog until it passes again. The results are public at /api/gw-health. The latest run, on 6 October 2026:

Outcome Endpoints
Returned data 227
Answered, but with no records ("empty") 25
Provider returned an error 14
Timed out 1
No test input 1
Total checked 268

The four days before tell you how much of that is noise. From the history:

Day Passed Failed
3 October 221 34
4 October 232 6
5 October 232 6
6 October 227 41

(Not every endpoint was checked every day.) Across those four days, 219 endpoints passed every check, 30 failed every check, and 19 passed on some days and failed on others. Failures cluster by provider: on 6 October, all 37 Crunchbase-data endpoints, all 32 twitter-api47 endpoints and all 10 reddit-com endpoints passed, while 14 of 62 tiktok-api23 endpoints came back empty and 7 of 34 tiktok-scraper7 endpoints returned errors.

Some failures don't last. FlashAPI's Instagram location feed failed the 6 October check with a provider error. When we called it on 7 October, it returned 21 posts for $0.00099.

Cost 1: are failed calls billed?

If failures are free, a retry costs nothing until it succeeds. If they are billed, your real price per success is the list price divided by the success rate:

cost per successful call = price per call / success rate     (when failures are billed)

At an 84.7% success rate, a $0.001 call really costs about $0.00118 per success, 18% over list. Sellers handle this differently, and most of them say so in their docs:

  • Oxylabs counts 4xx responses as successful and bills them.
  • EnsembleData doesn't charge for its own internal errors, but many of its endpoints still charge a unit when the result is empty or the item doesn't exist.
  • AnyAPI says "the attempt that failed costs $0", and that some failed wallet-funded requests incur processing charges, which it passes through at cost.
  • FetchAPI doesn't charge for a call the provider rejects with an HTTP error, a call that errors or times out, or a call refused by a rate limit or spending cap.

Cost 2: empty answers that look like success

The hardest cost to spot is an HTTP 200 that carries no data. We made two deliberately bad calls through our gateway to see what each one costs:

Call Provider's answer Metered
tiktok-scraper7 user/info for a username that doesn't exist HTTP 200, {"code": -1, "msg": "unique_id is invalid"} $0.0000197 (now $0, see below)
DataForSEO Google results with an invalid location_code HTTP 200, task status 40501 "Invalid Field: 'location_code'" $0

DataForSEO reports a cost of zero for a task it rejects, so nothing is charged. The TikTok listing answers "OK" with an error inside the body, and its plan bills every call as one request. When we made this call, our gateway metered it at the listing's price like any other 200. It is a tiny sum, but a pipeline that sends a million stale usernames would pay for a million of them. Finding this changed our gateway the same day: an answer that is an error in disguise ("status": "error", "success": false, a negative error code, or only an error message) is now treated as a failed call and is not charged. Elsewhere, the fix is on your side: validate inputs, and check for an error field in the body as well as the HTTP status. The "empty" row in our health table is the same problem: 25 endpoints answered without records.

Cost 3: failover surcharges

Automatic failover retries a failed call on another provider. It raises your success rate, and the rescue is billed at the second provider's price. AnyAPI publishes the numbers. Over 86 days ending 10 September 2026, its five busiest endpoints served 96,213 calls. The first provider asked returned 92.2% of them; with failover AnyAPI returned 99.6%. Rescued calls were billed at the rescuing provider's price, which added 4.1% to the bill across those calls.

Its catalogue shows why the first lane often isn't enough. For Google search:

AnyAPI google.search lane Price per call 30-day uptime
Ibex $0.0004 84.2%
Chameleon $0.0005 98.5%
Badger $0.0007 90.3%
Meerkat $0.0009 99.96%

The cheapest lane is the least reliable. Budget about 4% over list with AnyAPI-style failover, or the success-rate markup above without it.

Cost 4: rate limits cost time, then money

A rate limit doesn't appear on the invoice, but it sets how long a job takes, and buying more throughput usually means a bigger plan. From the RapidAPI listings we use:

  • twitter-api47: 60 requests a minute on PRO, 120 on ULTRA, 200 on MEGA.
  • tiktok-api6: 4 requests a second on PRO, 8 on ULTRA, 15 on MEGA.
  • reddit-com: 3 requests a second.

At 60 a minute, 100,000 calls take about 28 hours. For an agent answering a user in real time, the limit that matters is the burst: ten parallel tool calls against a 4-per-second limit means some wait or fail. Plan the concurrency, back off on HTTP 429, and don't count a 429 as a failure to retry immediately.

Cost 5: caps, or the lack of them

A runaway loop is the most expensive failure. Look for a hard spending cap you set yourself. AnyAPI has per-key spend limits, and a key over its limit is refused at no charge. On FetchAPI every key has a monthly spending cap and a rate limit, the service has a daily cap, and a call over any of them is refused (budget_exceeded or rate_limited) and not charged.

A checklist before you pick a provider

  1. Is a failed call billed? Is a 4xx? Is an empty result?
  2. Does it publish uptime or a health history you can check?
  3. If it fails over, what does a rescued call cost?
  4. What are the rate limits on the plan you'd actually buy?
  5. Can you set a hard spending cap per key?

How FetchAPI handles these

A successful call is charged the provider's price times our markup, which is currently 1.0. A call the provider rejects with an HTTP error, that answers 200 with an error inside, that errors or that times out is free. Every endpoint is health-checked daily in public, and failing ones leave the catalogue. Run a call and read meta.cost_usd:

curl -s "https://fetchapi.co/api/gw/flashapi/ig/locations?nocors=false&location_id=213862033" \
  -H "x-api-key: $FETCHAPI_KEY"

For what a successful call costs per record, see What one API request really costs. For why prices differ in the first place, see Why the same TikTok data costs 100x more. Endpoints are listed by platform on /apis/instagram and /apis/tiktok, they work as tools over MCP, and a free key gets you started.

Sources and data

Real calls made for this post through the FetchAPI gateway:

  • rapidapi-tiktok-scraper7/user/info unique_id=zz_no_such_user_fetchapi_test_9: HTTP 200, 0 items, 680 ms, cost $0.0000197 on 2026-10-07 02:42 UTC
  • dataforseo/serp/google/organic/live/advanced POST keyword=web scraping api, location_code=1 (invalid): HTTP 200, 0 items, 424 ms, cost $0 on 2026-10-07 02:42 UTC
  • flashapi/ig/locations nocors=false&location_id=213862033: HTTP 200, 21 items, 6647 ms, cost $0.00099 on 2026-10-07 02:42 UTC
Call these APIs with one key.

Every endpoint is tested daily and metered at the provider's price; failed calls are free.