I was spending $149/month on a scraping infrastructure subscription for a side project that pulled competitor pricing data once a day. The numbers stopped making sense when I realized I was paying whether I ran 10 requests or 10,000.
Then I found pay-per-result actors on Apify — and my monthly bill dropped to under $8. Here's the exact switch I made and how to know if it applies to your setup.
Why Apify Bills Surprise You
Apify has two pricing models, and most users default to the expensive one without realizing there's an alternative:
Pay-per-compute: You pay for total compute time — including initialization, retries, and time spent hitting bot detection walls. An actor that retries 400 times against Cloudflare before giving up charges you for all 400 attempts.
Pay-per-result: You pay only for successfully returned results. Retries, blocked requests, and initialization are the actor developer's problem, not yours.
The problem: Apify's UI doesn't visually flag which model an actor uses. You click "Run", it runs, and the invoice arrives 30 days later.
The three most common causes of billing overruns:
- No spending cap — Apify has no native alert when you cross a spending threshold mid-cycle
-
Unbounded runs — actors scheduled without a
maxResultscap will run until they're out of data - Wrong actor type — pay-per-compute on a bot-heavy target multiplies cost 10–50× vs. pay-per-result
Pay-Per-Result vs. Pay-Per-Compute: The Cost Decision You Didn't Know You Were Making
Here's the math that changes everything.
Say you want 1,000 Google SERP results per day.
With a generic HTTP scraper (pay-per-compute):
- Initialization + proxy rotation + retry overhead: ~$0.15–$0.40 per 1,000 results on a clean day
- With bot detection and retries: can reach $1.50–$4.00 per 1,000 results
With a pay-per-result SERP actor:
- Fixed price per result regardless of backend retry count
- Typical range: $0.002–$0.005 per result = $2–$5 per 1,000 results on the high end
- No surprise multipliers from retry loops
For most use cases where a pay-per-result actor exists — SERP scraping, LinkedIn data, Amazon products, social media profiles — the pay-per-result model wins at any volume above a few hundred results.
Rule: Always check the Apify Store for a pay-per-result actor before using a generic scraper for a bot-protected target.
The Five Most Expensive Apify Mistakes
These are the five configurations that generate the largest billing surprises. None require code to fix.
1. Scheduling an unbounded run
Default actor config has no maxResults cap. An actor scheduled to run daily will scrape until it exhausts all available data. Fix: set maxResults in your actor input before every production deployment.
2. No retry cap
Default retry settings will retry indefinitely against bot detection. Fix: cap retry count at 3. Most legitimate failures resolve in 3 retries; anything beyond that is usually a blocked IP that needs rotation, not more retries.
3. Using pay-per-compute for a use case that has a pay-per-result alternative
Search the Apify Store by use case (e.g., "Google SERP", "LinkedIn profiles", "Amazon products") before selecting an actor. Filter for actors with pay-per-result pricing. If one exists for your use case, start there.
4. Verbose logging in production
Debug-level logging writes to Apify's storage at every step. For high-volume runs, logging costs become measurable. Disable debug logging in production actor configs.
5. No per-run cost baseline
If you don't know your current cost-per-result, you can't detect when something is wrong. Pull the first 100-result test before any new actor goes into production.
How to Calculate Your True Cost-Per-Result
Pull your per-actor compute usage from the Apify console.
cost_per_result = total_actor_cost_this_month / total_results_returned
Compare that number against the pay-per-result actor alternative for the same use case. If the pay-per-result actor is cheaper, switch before your next billing cycle.
For new actors: run 100 results, check the run cost, multiply by your monthly volume. Do this before scheduling.
The Apify Usage Stats API: Automated Cost Monitoring
Apify exposes a Usage Stats API that returns per-actor cost data in machine-readable format.
Basic setup:
- Hit
GET /v2/users/me/usage/monthlywith your API token - Pull
computeUnits,dataTransferGbytes, andtotalCostUsdper actor - Log to a Google Sheet on a daily schedule
Add a threshold alert: compare each actor's month-to-date cost against your defined limit. If any actor exceeds the threshold, fire a Slack or email alert.
Which Actor Types Are Pay-Per-Result on Apify?
The pay-per-result model is most common in these categories:
- SERP scraping — Google, Bing results
- E-commerce — Amazon, eBay product pages
- Social media profiles — LinkedIn, Twitter/X, Instagram, TikTok
- Review platforms — Google Maps, Trustpilot, G2
- Job listings — LinkedIn Jobs, Indeed, Glassdoor
For any of these categories, check the Apify Store before defaulting to a generic HTTP scraper.
What Changed in My Setup
I replaced a generic apify/cheerio-scraper for competitor SERP monitoring with a dedicated pay-per-result SERP actor. Monthly cost: $149 → $7.40.
If you're running Apify actors in production and haven't checked which pricing model each actor uses, that's the first thing worth doing. Pull your current cost-per-result. Compare it to the pay-per-result alternative. The switch pays for itself in the first billing cycle.
Related Reading
- Web Scraping Without Getting Banned in 2026
- Web Scraping Tools Comparison 2026: requests vs curl_cffi vs Playwright vs Scrapy
- curl_cffi Stopped Working? Here's What to Try Next
Save Time: Get 35 Production-Ready Scrapers
If you want to skip the build and go straight to results, I packaged all 35 Apify actors I run in production into a single bundle — contact info, SERP, LinkedIn, Amazon, TikTok, Reddit, and more.
Apify Scrapers Bundle — $29 — one-time purchase, instant download.
Each actor uses PAY_PER_EVENT pricing: $0.002–$0.005 per result. No subscription, no API keys to manage. Just run and pay for what you use.
Top comments (0)