Apify Cost Tuning
SkillDocs & knowledgeHelps your agent cut Apify platform costs by tuning memory settings and compute usage.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Apify Cost Tuning skill
About this skill
'Optimize Apify platform costs through memory tuning, compute unit
What this skill tells your AI
The instructions your AI receives, as published by jeremylongshore/tons-of-skills-marketplace in skills/.curated/apify-cost-tuning/SKILL.md and read by ahel’s review.
Overview
Apify charges on three axes: compute units (CU), proxy traffic (GB), and storage. One CU = 1 GB of memory running for 1 hour, so cost scales with both memory allocation and run duration. This skill walks the investigate → tune → guard loop that finds where spend is going, cuts it at the biggest lever (memory), and installs guardrails so it stays down.
Full pricing tables (plan CU prices, proxy rates, storage rules) live in pricing-model.md.
Prerequisites
- An Apify account with API access and
APIFY_TOKENset in the environment. - The
apify-clientpackage installed (npm install apify-client). - At least one Actor with run history to analyze.
Instructions
The workflow is six steps. Each is summarized here with its core lever; the full, runnable code for every step is in implementation.md.
-
Analyze current costs — roll up the last N days of runs into total CU, USD, and duration, and surface the single most expensive run:
import { ApifyClient } from 'apify-client'; const client = new ApifyClient({ token: process.env.APIFY_TOKEN }); const { items: runs } = await client.actor(actorId).runs().list({ limit: 1000, desc: true }); const totalUsd = runs.reduce((s, r) => s + (r.usageTotalUsd ?? 0), 0); -
Reduce memory allocation (biggest lever) — sweep memory from 4096 MB down to 256 MB and stop at the first failure to find the sweet spot. Most CheerioCrawler Actors are over-provisioned. Sweet spots: simple Cheerio 256-512 MB, complex 512-1024 MB, Playwright 2048-4096 MB.
-
Optimize crawl duration — higher
maxConcurrency, tighterrequestHandlerTimeoutSecs, amaxRequestsPerCrawlcap, fewer retries, and selectiveenqueueLinks. Faster crawls consume fewer CUs. -
Minimize proxy costs — prefer datacenter (free with plan), only reach for residential when a site blocks it, block images/fonts/CSS to save residential GB, and reuse proxy sessions with
useSessionPool. -
Cost guard for runaway Actors — start the run, poll
usageTotalUsdevery 30s, and.abort()once spend crosses a hard cap. -
Monitor monthly usage — iterate every Actor's runs since the 1st of the month and print a cost-descending report so the top spenders are obvious.
See full walkthrough for the complete code of each step, including the memory sweep, proxy hooks, budget guard, and monthly report.
Output
Running this skill produces:
- A per-Actor cost analysis (runs, total CU, total USD, avg CU/run, avg cost/run, most expensive run) for a chosen lookback window.
- A memory profile table mapping memory settings to status, duration, CU, and USD so you can pick the cheapest allocation that still succeeds.
- A monthly cost report ranking every Actor by spend, with a grand total.
- Tuned Actor configuration (reduced memory, capped crawls, proxy resource blocking) and an optional budget guard that aborts runs exceeding a USD ceiling.
Cost Optimization Checklist
- Memory profiled (start low: 256-512MB for Cheerio)
-
maxRequestsPerCrawlset to prevent runaway crawls - Datacenter proxy used when possible (free with plan)
- Residential proxy: images/CSS/fonts blocked to save bandwidth
-
maxConcurrencytuned (higher = faster = fewer CUs) - Scheduled runs have appropriate frequency (don't over-scrape)
- Cost guard implemented for expensive runs
- Monthly usage reviewed
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Unexpected cost spike | No maxRequestsPerCrawl | Always set an upper bound |
| High residential proxy cost | Scraping images/fonts | Block non-essential resources |
| Over-provisioned memory | Default 1024MB | Profile and reduce to minimum |
| Too many scheduled runs | Aggressive cron | Reduce frequency if data freshness allows |
Examples
Three worked scenarios chain the steps against concrete symptoms — a CheerioCrawler bill that tripled, runaway residential-proxy GB, and guarding a brand-new Actor. Each shows the full investigate → tune → verify loop. See examples.md.
Quick guard example — abort any run that exceeds $0.50:
// runWithBudget polls usageTotalUsd every 30s and aborts past the cap
const run = await runWithBudget('user/scraper', input, 0.50);
Resources
- Apify Pricing
- Usage & Resources
- Compute Unit Calculator
- pricing-model.md — full pricing tables (local)
- implementation.md — complete step-by-step code (local)
- examples.md — worked cost-tuning scenarios (local)
Next Steps
For architecture patterns, see apify-reference-architecture.
Signals
- GitHub stars
- 3k
- Forks
- 408
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packages
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
apify-cost-tuning- Source
- github.com/jeremylongshore/tons-of-skills-marketplace
github.com/jeremylongshore/tons-of-skills-marketplace
More in Docs & knowledge
Skill · mattpocock
More in Docs & knowledgecanvas-design
Skill · anthropics
More in Docs & knowledgedoc-coauthoring
Skill · anthropics
More in Docs & knowledgewriting-for-agents
Skill · mattpocock
More in Docs & knowledgespec-driven-development
Skill · addyosmani
More in Docs & knowledgedefuddle
Skill · kepano
More in Docs & knowledge