PPE Cost Estimator
Pricing
Pay per event
PPE Cost Estimator
PPE Cost Estimator analyzes any Apify actor's recent run history and calculates the true cost per result — including compute units, dataset storage, and pay-per-event charges. It projects costs to your target volume with confidence intervals so you can budget accurately before scaling.
Pricing
Pay per event
Rating
0.0
(0)
Developer

Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
PPE Cost Estimator — Know Your Per-Result Costs Before You Scale
What does PPE Cost Estimator do?
PPE Cost Estimator analyzes any Apify actor's recent run history and calculates the true cost per result — including compute units, dataset storage, and pay-per-event charges. It projects costs to your target volume with confidence intervals so you can budget accurately before scaling.
Why use PPE Cost Estimator?
- No guesswork — get data-driven cost estimates from real run history, not theoretical calculations
- Full cost breakdown — see CU costs, event charges, and storage fees separately
- Volume projections — estimate total cost for 100, 1,000, or 100,000 results with low/high confidence bounds
- PPE event analysis — automatically detects pay-per-event pricing and computes per-event averages
- What-if scenarios — override event prices to test different pricing tiers before committing
- Optimization tips — actionable recommendations to reduce costs (memory, batch size, failure rate)
How much does it cost?
PPE Cost Estimator uses pay-per-event pricing:
| Event | Price | When charged |
|---|---|---|
start | $0.035 | Once per run |
actor-analyzed | $0.005 | Per actor analyzed |
Typical run: Analyzing one actor costs $0.04 total (1 start + 1 actor-analyzed). Platform compute costs are minimal since this actor only calls APIs.
What data can you extract?
| Field | Example |
|---|---|
actorName | "web-scraper" |
analyzedRuns | 10 |
avgResultsPerRun | 47.3 |
avgDurationSecs | 125.6 |
avgComputeUnits | 0.0682 |
avgCostPerRun.totalUsd | 0.0371 |
costPerResult | 0.000785 |
eventPrices[].eventName | "page-scraped" |
projection.estimatedCostUsd | 16.60 |
projection.costPerResult | 0.000785 |
projection.lowEstimateUsd | 12.40 |
projection.highEstimateUsd | 21.80 |
recommendations[] | "Memory is 8192 MB but runs are short..." |
How to estimate actor costs
- Open PPE Cost Estimator on Apify Console.
- Enter the Actor ID (e.g.,
apify/web-scraperor a full ID likeVOERbTZDFEs88Xpyi). - Set Sample runs (default 10) — more runs = more accurate estimates.
- Set Target volume — how many results you want to project costs for.
- Click Start and review the cost breakdown in the dataset.
Example input
{"actorId": "apify/web-scraper","sampleRunCount": 10,"targetVolume": 5000}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
actorId | string | Yes | — | Actor ID or username/name |
sampleRunCount | integer | No | 10 | Recent runs to analyze (1–50) |
targetVolume | integer | No | 1000 | Results to project costs for |
customEventPrices | object | No | — | Override event prices for what-if analysis |
Output example
{"actorId": "automation-lab/google-maps-lead-finder","actorName": "google-maps-lead-finder","analyzedRuns": 8,"successfulRuns": 7,"avgResultsPerRun": 4.6,"avgDurationSecs": 156.3,"avgComputeUnits": 0.1737,"avgMemoryMbytes": 4096,"avgCostPerRun": {"computeUnitsUsd": 0.0434,"datasetStorageUsd": 0.000002,"eventChargesUsd": 0.0776,"totalUsd": 0.121},"costPerResult": 0.0263,"eventPrices": [{ "eventName": "start", "priceUsd": 0.05, "avgCountPerRun": 1 },{ "eventName": "lead", "priceUsd": 0.006, "avgCountPerRun": 4.6 }],"projection": {"targetVolume": 1000,"estimatedRuns": 218,"estimatedCostUsd": 26.38,"costPerResult": 0.02638,"lowEstimateUsd": 19.50,"highEstimateUsd": 34.20},"recommendations": ["No issues detected. Cost profile looks healthy."]}
Tips for best results
- Run the actor at least 5 times before estimating — more samples mean more accurate estimates.
- Use
customEventPricesto test pricing changes before updating your actor's actual pricing. - Check the
recommendationsarray — it flags common cost optimization opportunities. - Compare
lowEstimateUsdvshighEstimateUsd— a wide gap means high run-to-run variance. - Filter failed runs — the estimator automatically prefers successful runs for accuracy.
Integrations
Connect PPE Cost Estimator with Make, Zapier, n8n, or any HTTP-based automation tool. Use the Apify API to trigger runs and retrieve dataset results programmatically.
Using the Apify API
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('automation-lab/ppe-cost-estimator').call({actorId: 'apify/web-scraper',targetVolume: 10000,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Cost per result: $${items[0].costPerResult}`);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('automation-lab/ppe-cost-estimator').call(run_input={'actorId': 'apify/web-scraper','targetVolume': 10000,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(f"Cost per result: ${items[0]['costPerResult']}")
FAQ
Can I analyze any actor? Yes, any actor you have access to — your own actors, public Store actors, or actors shared with your organization.
Does it work with flat-rate (CU-only) actors? Yes. It calculates CU costs even without PPE pricing. Event charges will show as $0 if no PPE pricing is configured.
How accurate are the estimates? Accuracy depends on sample size and run consistency. With 10+ similar runs, estimates are typically within the low/high confidence bounds.
Can I test different pricing before publishing? Yes, use customEventPrices to override event prices and see projected costs under different pricing tiers.
Does it actually run the target actor? No. It only reads historical run data via the Apify API. No compute is used on the target actor.
What if the actor has no runs? The actor needs at least one completed run. You'll get an error message suggesting to run it first.