Overview

What you are charged for#

Item Charge
A profile row written to your dataset $0.00015
An empty-run diagnostic row $0.00015, at most 1 per run
Starting a run No charge
Adding targets or selecting relations No charge
A profile the Actor inspected but a filter rejected No charge
A duplicate removed by dedupeAcrossTargets No charge
A row the dataset rejected No charge

One charge applies per delivered dataset row. The Actor may read many more profiles than it writes; the reading is not billed.

Worked examples#

These are arithmetic on the stated rate, not separate plans:

Delivered profiles Xquik charge
1,000 $0.15
10,000 $1.50
100,000 $15.00
1,000,000 $150.00

Apify platform usage is additional and depends on your Apify plan. See Apify pricing for those terms — this page does not restate them.

Cap the spend of a run#

Set Max cost per run in Apify Console, or maxTotalChargeUsd through the Apify API. Apify exposes that value to the Actor as ACTOR_MAX_TOTAL_CHARGE_USD, and the Actor stops before accepting rows beyond it.

{
  "twitterHandles": ["openai", "anthropicai"],
  "relation": "followers",
  "minFollowers": 5000,
  "maxTotalChargeUsd": 5
}

Leave maxItems empty to let the run return as many profiles as the spend cap allows. Set maxItems only when you want a smaller result cap than the budget would permit, and maxItemsPerTarget when one large account would otherwise consume the whole global limit.

Knowing the cost of a run after it finishes#

Every run writes a run-report record containing estimatedChargeUsd, calculated from the live pay-per-event price Apify exposes to the Actor. Every outcome writes one, including no-input and invalid-input exits. Its version field reports the exact published Actor source version, so a cost you compare across weeks is anchored to a known build.

See the run report reference for the fields it carries.

Partial and interrupted runs#

  • completionReason: "partial_failure" means at least one target stopped after a read failure; failedTargets counts them. Accepted profiles remain billable data rows.
  • completionReason: "deadline_reached" means a finite timeout you set is near. The Actor reserves the final 15 seconds for checkpoints, rows, reports, and a clean exit. Valid profiles are delivered and bill once; unfinished pagination remains resumable by re-running the target.

Next steps#

One rate, every plan
Test the rate on a 200-row run

Set a max cost per run, scrape one handle, and compare the estimatedChargeUsd in the run report against your own estimate.

Updated