Apify PPE Pricing Explained: Pay Per Event Model, Strategy, and Code Examples
Pay Per Event (PPE) is Apify's usage-based monetization model for actors on the Apify Store. Developers set a price per event (typically $0.001 to $0.50), call Actor.addChargeForEvent() in their code, and keep 80% of revenue while Apify takes 20%. This ApifyForge guide covers the 80/20 revenue split, actor.json configuration, charging code patterns, the 14-day price change rule, and pricing strategy by actor type.
Pay Per Event (PPE) is Apify's usage-based monetization model for actors listed on the Apify Store. PPE lets developers charge users per unit of work -- one scraped result, one page processed, one report generated -- rather than a flat subscription. According to Apify's official documentation, developers keep 80% of PPE revenue while Apify retains 20% as a platform commission. ApifyForge tracks PPE pricing across Apify actors, and the typical price range is $0.001 to $0.50 per event depending on actor type. This guide from ApifyForge covers the revenue split math, actor.json configuration, charging code patterns, the 14-day price change rule, and pricing strategy for each actor category.
How the 80/20 revenue split works
When a user runs your actor and it charges 100 events at $0.01 each, the total charge is $1.00. Apify keeps $0.20 (20%) and the developer receives $0.80 (80%). This split applies to all PPE revenue regardless of volume, as documented in Apify's monetization docs. There are no volume tiers, no minimum payouts, and no hidden fees. Revenue appears in the developer's Apify Console dashboard within 24 hours of the run completing.
Here is the revenue math for common PPE price points:
| Price per event | Events per run | Revenue per run | Developer share (80%) | Apify share (20%) |
|---|---|---|---|---|
| $0.001 | 1,000 | $1.00 | $0.80 | $0.20 |
| $0.005 | 500 | $2.50 | $2.00 | $0.50 |
| $0.01 | 200 | $2.00 | $1.60 | $0.40 |
| $0.05 | 100 | $5.00 | $4.00 | $1.00 |
| $0.50 | 10 | $5.00 | $4.00 | $1.00 |
A higher price per event with fewer events can generate the same revenue as a low price with high volume. The optimal price depends on the value the actor provides, not the compute it consumes.
Setting PPE pricing in actor.json
PPE pricing is configured in the actor's .actor/actor.json file under the pricingModel field. Developers define 3 required properties: pricePerEvent (USD), eventTitle (singular noun), and eventDescription (what one event represents). This configuration is documented in Apify's actor.json reference.
{
"pricingModel": {
"pricingType": "PAY_PER_EVENT",
"pricePerEvent": 0.005,
"eventTitle": "result",
"eventDescription": "One scraped product result including title, price, and availability"
}
}Important: The eventTitle appears in the user's billing dashboard as "X results" or "X pages". Clear nouns like "result", "page", "profile", "report", and "query" set correct expectations. Vague terms like "unit" and "credit" confuse users and increase support requests.
Charging events in code with Actor.addChargeForEvent()
Setting the price in actor.json only defines the rate. Developers must explicitly charge events in code by calling Actor.addChargeForEvent(). If this method is never called, users pay nothing regardless of the pricing model configuration.
import { Actor } from 'apify';
Actor.main(async () => {
const input = await Actor.getInput();
const results = await scrapeProducts(input.keyword);
// Push all data first, then charge — never charge before delivering
await Actor.pushData(results);
// Charge one event per result
await Actor.addChargeForEvent({
eventName: 'result',
count: results.length,
});
console.log('Charged for ' + results.length + ' results');
});Incremental charging is also supported, which is useful for long-running actors where users see charges accumulate in real time:
// Incremental charging: push and charge one at a time
for (const result of results) {
await Actor.pushData(result);
await Actor.addChargeForEvent({
eventName: 'result',
count: 1,
});
}Critical rule: Never charge events before delivering the data. If an actor charges 100 events but then crashes before pushing results, the user has paid for nothing. Always push data first, then charge. When charging incrementally, pair each charge with its corresponding data push.
The 14-day price change notice period
Apify enforces a 14-day notice period for PPE price increases to protect users. When a developer raises the price per event, the new price does not take effect for 14 days. Active users receive a notification about the upcoming change. Price decreases take effect immediately with no waiting period.
This rule has a strategic implication: do not launch with a low introductory price intending to raise it later. The 14-day window gives users two full weeks to find alternatives, migrate their workflows, and leave negative reviews. Plan the pricing strategy before the first apify push.
Tip from managing Apify actors on ApifyForge: The 14-day rule also applies to metadata-only pushes. Running apify push with a higher pricePerEvent in actor.json starts the notice period immediately. Even if the old price is pushed back within minutes, the notification has already been sent to active users. Always verify actor.json pricing before pushing.
PPE pricing strategy by actor type
Different actor categories have different optimal PPE price ranges. The table below shows typical pricing based on ApifyForge's analysis of Apify actors on the Apify Store:
| Actor type | PPE price range | Event definition | Example |
|---|---|---|---|
| Data extraction (scrapers) | $0.001 -- $0.01 | Per result returned | LinkedIn profile scraper at $0.003/profile |
| Intelligence / analytics | $0.05 -- $0.50 | Per report generated | Competitor analysis at $0.25/company |
| MCP server actors | $0.005 -- $0.05 | Per tool call | Multi-tool MCP at $0.01/call |
| Utility (converters) | $0.001 -- $0.01 | Per file or operation | HTML-to-PDF at $0.002/page |
Data extraction actors price per result returned. Users expect high volume at low unit cost. At $0.003 per profile and 1,000 profiles per run, the user pays $3.00 and the developer earns $2.40.
Intelligence actors price per report or analysis. Users pay for processed insights, not raw data. A competitor analysis actor at $0.25 per company generates $0.20 per report for the developer.
MCP server actors price per tool call. MCP servers bundle multiple tools, and each invocation is a billable event. See the Monetization guide for MCP bundling strategies.
Utility actors price per file or operation. Prices stay low because alternatives exist for most utility tasks.
Competitive pricing analysis
Before setting a price, check competing actors on the Apify Store. Search for the target keywords and note the PPE pricing of the top 5 results. The actor does not need to be the cheapest, but any premium should be justified by better output quality, more features, or higher reliability. ApifyForge provides a competitive analysis view that compares PPE pricing against similar actors in the same category.
5 common PPE pricing mistakes
Mistake 1: Pricing too low. Developers set $0.001 per event thinking it attracts users. At that rate, even 10,000 events per day generates only $8.00 in revenue ($6.40 after the 20% commission). Extremely low prices also signal low value.
Mistake 2: Vague event definitions. If the event description says "one run" but each run processes a variable amount of data, users cannot predict costs. Be specific: "one search result returned" or "one URL processed" sets clear expectations.
Mistake 3: Not calling addChargeForEvent(). PPE pricing is defined in actor.json but Actor.addChargeForEvent() is never called in code. The actor runs for free, the developer earns nothing, and the mistake goes unnoticed for weeks because there are no errors.
Mistake 4: Charging on failure. The actor charges an event, then hits an error for that item. The user has paid for a failed result. Always validate that a result is complete and correct before calling addChargeForEvent().
Mistake 5: Ignoring compute costs. PPE revenue must exceed compute costs to be profitable. If an actor uses 1 GB of RAM for 5 minutes to process 100 results at $0.001 each, the developer earns $0.08 but the compute cost is approximately $0.05 -- a 37.5% margin. Track compute costs using the Apify Console or ApifyForge's revenue dashboard which shows revenue-to-compute ratios.
Updating PPE prices with the Apify API
PPE pricing can be updated programmatically using the Apify API client, which is useful for bulk price adjustments across a portfolio of actors. The 14-day notice rule applies to all price increases, whether made via the Apify Console UI or the API.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
// Update pricing for an actor
await client.actor('your-actor-id').update({
pricingModel: {
pricingType: 'PAY_PER_EVENT',
pricePerEvent: 0.008,
eventTitle: 'result',
eventDescription: 'One scraped product result with full details',
},
});Monitoring PPE revenue
Track PPE revenue daily, not monthly. A sudden drop in revenue indicates a competing actor launched, a bug is reducing output volume, or a major user churned. The Apify Console shows per-actor revenue, but for portfolio-level tracking across 10+ actors, ApifyForge provides aggregated revenue trends, per-actor breakdowns, and revenue-per-compute ratios at apifyforge.com/tools.
Frequently asked questions
What is PPE pricing on Apify?
Pay Per Event (PPE) is Apify's usage-based pricing model for actors on the Apify Store. Developers define an "event" (one result, one page, one report), set a price per event in actor.json, and call Actor.addChargeForEvent() in their code. Apify handles billing, takes a 20% commission, and pays the developer 80% of revenue.
How much should I charge per event for my Apify actor?
PPE prices typically range from $0.001 for simple data extraction results to $0.50 for complex intelligence reports. The right price depends on the value provided, not the compute consumed. ApifyForge tracks pricing across Apify actors and shows that scrapers average $0.001 to $0.01 per result, while analytics actors charge $0.05 to $0.50 per report.
What happens if I raise my Apify actor's PPE price?
Apify enforces a 14-day notice period for all PPE price increases. Active users receive a notification, and the old price remains in effect for 14 days. Price decreases take effect immediately. This rule applies whether the change is made through the Apify Console or the API.
Why is my Apify actor earning zero PPE revenue?
The most common cause is not calling Actor.addChargeForEvent() in the actor's code. Setting pricePerEvent in actor.json only defines the rate. The developer must explicitly charge events by calling Actor.addChargeForEvent({ eventName: 'result', count: N }) after delivering results. Without this call, users pay nothing.
Can I charge different prices for different event types?
Yes. Apify supports multi-tier PPE pricing by defining multiple event names at different price points. For example, a "basic-result" event at $0.002 and an "enriched-result" event at $0.01. Each event type has its own price, title, and description visible to users before they run the actor.
How do I calculate if my Apify actor is profitable?
Subtract compute costs from PPE revenue. If an actor uses 1 GB of RAM for 5 minutes (approximately $0.05 in compute) and charges 100 events at $0.005 each ($0.50 total, $0.40 after the 20% commission), the profit margin is 87.5%. ApifyForge's revenue dashboard calculates this ratio automatically for all actors in a portfolio.
Related guides
Getting Started with Apify Actors
To build an Apify actor, install Node.js 18+ and the Apify CLI, scaffold a project with apify create, write your logic inside Actor.main(), define an input_schema.json, and deploy with apify push. This guide walks through every step from zero to a published Apify Store listing.
How to Monetize Your Actors
To monetize Apify actors, start with Pay Per Event pricing at $0.01-$0.25 per result, then layer on tiered pricing for power users, free-tier funnels to drive adoption, and MCP server bundles that combine multiple actors into a single subscription. ApifyForge analytics tracks revenue per actor so you know which strategies work. This guide covers each revenue model with real pricing examples.
Actor Testing Best Practices
To test an Apify actor, define input/output test cases in a JSON fixture, run them with the ApifyForge test runner before every deploy, and set assertions on output shape, field counts, and error rates. The regression suite catches breaking changes by comparing current output against a saved baseline. This guide covers the full testing workflow from local validation to CI/CD integration.
Store SEO Optimization
Apify Store search ranks actors by title match, README keyword density, category tags, run volume, and a quality score out of 100. To rank higher, write a README that opens with a plain-language description of what the actor does, include target keywords in the first 100 words, set accurate categories in actor.json, and maintain a success rate above 95%. This guide breaks down every ranking factor and shows how ApifyForge tracks your score.
Managing Multiple Actors
To manage 10, 50, or 200+ Apify actors, use the ApifyForge fleet dashboard to monitor health, revenue, and quality scores across your entire portfolio in one view. Group actors by category, run bulk updates on pricing and metadata, set up failure alerts, and track maintenance pulse to catch stale actors before users complain. This guide covers fleet management workflows at every scale.
Cost Planning Tools: Calculator, Plan Advisor & Proxy Analyzer
How to use ApifyForge's cost planning tools to estimate actor run costs, choose the right Apify subscription plan, and pick the most cost-effective proxy type for each scraper.
AI Agent Tools: Pipeline Preflight, LLM Optimizer & Integration Templates
How to use ApifyForge's AI agent tools to debug MCP server connections, design multi-actor pipelines, optimize actor output for LLM token efficiency, and generate integration templates.
Schema Tools: Diff, Registry & Input Guard
How to use ApifyForge's schema tools to compare actor output schemas, browse the field registry, and test actor inputs before running — preventing wasted credits and broken pipelines.
Compliance Scanner, Actor Recommender & Comparisons
How to use ApifyForge's compliance risk scanner to assess legal exposure, the actor recommender to find the best tool for your task, and head-to-head comparisons to evaluate competing actors.
The ApifyForge Testing Suite
Four cloud-powered testing tools for Apify actors: Output Guard, Deploy Guard, Cloud Staging, and Regression Suite. How they work together and when to use each one.
The Complete ApifyForge Tool Suite
All 15 developer tools in one guide: testing, schema analysis, cost planning, compliance scanning, LLM optimization, pipeline building, and privacy reporting. What each tool does, when to use it, and how they work together.
What Is an Apify Actor?
An Apify actor is a serverless cloud program that runs on the Apify platform. It accepts JSON input, executes a task (scraping, data processing, API calls, or AI tool serving), and produces structured output in datasets, key-value stores, or request queues. Actors are packaged as Docker containers and can be run via API, scheduled, or chained together.
What Are MCP Servers on Apify?
MCP (Model Context Protocol) servers are Apify actors that run in standby mode and expose tools via an HTTP endpoint for AI assistants like Claude Desktop, Cursor, and Windsurf. They connect large language models to real-world data sources -- APIs, databases, web scrapers, and intelligence feeds -- so AI agents can take actions beyond text generation.
How to Choose the Right Apify Actor
With over 3,000 actors on the Apify Store, choosing the right one for your task requires evaluating success rates, run history, pricing, maintenance frequency, and input schema quality. This guide provides a decision framework for selecting actors based on measurable quality metrics, plus tools to automate the comparison process.
How to Manage a Large Apify Actor Portfolio
Managing 10 Apify actors is straightforward. Managing 50 requires dashboards and cost tracking. Managing 200+ demands automated regression testing, schema validation, revenue analytics, and failure alerting. This guide covers the tools, processes, and hard-won lessons from scaling an Apify actor portfolio.