How it works, and how you pay
The loop
- Discover
POST /v1/discoverwith a natural-language query. Results come from two places: the first-party registry (ranked by name, tag, description and provider match) and a live search of the Apify Store. Each result carriesstatus:live,needs_keyorbyok_only. - Inspect
POST /v1/inspectreturns the JSON schema for the input, the price model, expected latency and the upstream docs link. Free, no balance needed. - Run
POST /v1/runexecutes. The response includesoutput,providerResponse.httpStatus, and abillingblock with the exact charge.
Price models
| Type | Meaning | Example |
|---|---|---|
PER_CALL | Flat price per execution. | Weather forecast $0.002 |
PER_RESULT | flatFee per call plus amount per item returned. Items are counted from the actual output. | Apify actor $0.005 + $0.002 per row |
PER_UNIT | flatFee plus amount per unit consumed (1k tokens, minute, character). Units come from the provider's usage report. | Claude $0.001 + $0.012 per 1k tokens |
What you are charged
Every successful run costs provider price + $0.001 platform fee. Provider price on our master accounts is the upstream rate plus 25%. If you connected your own key for that provider, the provider portion is $0 and you pay only the fee.
- Before running, we estimate the cost (using your
limit-style inputs where present) and return402 INSUFFICIENT_FUNDSif the balance cannot cover it. - After running, we debit the actual amount. If the upstream returned an error (4xx/5xx other than a normal 404-no-data), you are charged nothing and the run is recorded as FAILED or COMPLETED with the provider status visible.
- A
BLOCKEDrun (provider not enabled, or your key required) costs nothing.
Reading a run response
{
"runId": "5b1c…", "provider": "open-meteo", "endpoint": "/forecast",
"status": "COMPLETED", // COMPLETED | FAILED | BLOCKED | TIMED_OUT | STOPPED
"output": { "current": { "temperature_2m": 93.4 }, ... },
"providerResponse": { "httpStatus": 200, "error": null },
"price": { "type": "PER_CALL", "amount": 0.002 },
"billing": { "units": 1, "providerUsd": 0.002, "platformFeeUsd": 0.001,
"totalUsd": 0.003, "byok": false, "balanceAfterUsd": 1.997 },
"durationMs": 412, "createdAt": "…", "completedAt": "…"
}Balance
Workspaces start with $2.00. Top up by card from the dashboard in $10 to $5,000 increments. Balance never expires. GET /v1/wallet/balance and GET /v1/wallet/activities expose the same numbers the dashboard shows; every debit row carries the runId.
Limits
- Synchronous runs time out at 280 seconds. Apify actors are given a 110-second synchronous window; use
maxItemsto bound long scrapes. - Outputs over ~900 KB are truncated in the stored run record but returned in full on the response.
- Discover is limited to 40 results per query.