Actor Revenue Analytics avatar

Actor Revenue Analytics

Pricing

$100.00 / 1,000 revenue synceds

Go to Apify Store
Actor Revenue Analytics

Actor Revenue Analytics

Estimate PPE revenue per actor based on run volumes and pricing. Find top earners, actors missing pricing, and revenue by tier. Built for Apify developers monetizing on the Store.

Pricing

$100.00 / 1,000 revenue synceds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 hours ago

Last modified

Share

ApifyForge Revenue Tracker -- PPE Revenue Estimator

Track and estimate revenue across your entire Apify actor portfolio. ApifyForge Revenue Tracker scans every actor in your account, reads their Pay-Per-Event (PPE) pricing configuration, multiplies by 30-day run volumes, and produces a detailed revenue breakdown by actor. It identifies your top earners, flags actors with high traffic but no pricing configured (missed revenue opportunities), and classifies your portfolio into budget, standard, and premium pricing tiers. Built to power the revenue panel of the ApifyForge dashboard.

Why use ApifyForge Revenue Tracker?

  • Revenue visibility. See estimated monthly revenue across your entire actor fleet in a single structured report.
  • Find missed revenue. Identifies actors with active users but no PPE pricing configured -- these are monetization opportunities you are leaving on the table.
  • Top earner ranking. Instantly see which 10 actors generate the most revenue so you know where to focus optimization efforts.
  • Pricing tier analysis. Breaks down your portfolio into budget ($0.01-$0.05), standard ($0.05-$0.20), and premium ($0.20+) tiers with revenue totals for each.
  • Per-actor detail. Every actor gets a line item with its PPE price, run count, estimated revenue, and percentage of total revenue.
  • Revenue concentration risk. The percentOfTotal field for each actor helps you identify dangerous revenue concentration on a single actor.
  • Dashboard-ready output. Structured JSON designed for direct integration with ApifyForge for charts and trend tracking.

Key Features

  • Fetches all actors from your account via paginated API calls
  • Reads PPE pricing from the actor detail endpoint (pricingInfos array)
  • Counts 30-day runs using actor stats or direct run history sampling
  • Calculates estimated revenue per actor as runs30d * ppePrice
  • Ranks actors by revenue and surfaces the top 10 earners
  • Identifies actors with runs but no pricing (missed revenue)
  • Classifies actors into budget, standard, and premium pricing tiers
  • Computes revenue contribution percentage for each actor

How to Use

  1. Go to ApifyForge Revenue Tracker on the Apify Store.
  2. Click Try for free.
  3. Enter your Apify API Token (find it at Settings > Integrations).
  4. Click Start.
  5. Wait for the run to complete (typically 30-90 seconds).
  6. View the revenue breakdown in the Dataset tab, or download as JSON.

Input Parameters

ParameterTypeRequiredDefaultDescription
apifyTokenstringYes--Your Apify API token. Used to authenticate all API calls. Find it at https://console.apify.com/settings/integrations

Input Examples

Standard revenue analysis:

{
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Automated daily tracking via API:

{
"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Output Example

{
"totalEstimatedRevenue30d": 4821.50,
"revenueByActor": [
{
"name": "google-maps-scraper",
"id": "abc123",
"runs30d": 8421,
"ppePrice": 0.25,
"ppeName": "result-scraped",
"estimatedRevenue": 2105.25,
"percentOfTotal": 43.7
},
{
"name": "linkedin-scraper",
"id": "def456",
"runs30d": 5102,
"ppePrice": 0.15,
"ppeName": "profile-scraped",
"estimatedRevenue": 765.30,
"percentOfTotal": 15.9
},
{
"name": "free-utility-actor",
"id": "xyz999",
"runs30d": 312,
"ppePrice": null,
"ppeName": null,
"estimatedRevenue": 0,
"percentOfTotal": 0
}
],
"topEarners": [
{
"name": "google-maps-scraper",
"id": "abc123",
"runs30d": 8421,
"ppePrice": 0.25,
"ppeName": "result-scraped",
"estimatedRevenue": 2105.25,
"percentOfTotal": 43.7
},
{
"name": "linkedin-scraper",
"id": "def456",
"runs30d": 5102,
"ppePrice": 0.15,
"ppeName": "profile-scraped",
"estimatedRevenue": 765.30,
"percentOfTotal": 15.9
}
],
"actorsWithNoPricing": [
{ "name": "free-utility-actor", "id": "xyz999", "runs30d": 312 },
{ "name": "demo-scraper", "id": "xyz998", "runs30d": 87 }
],
"pricingTierBreakdown": {
"budget": { "count": 42, "revenue": 210.50, "priceRange": "$0.01 - $0.05" },
"standard": { "count": 85, "revenue": 2840.75, "priceRange": "$0.05 - $0.20" },
"premium": { "count": 18, "revenue": 1770.25, "priceRange": "$0.20+" }
},
"trackedAt": "2026-03-16T14:30:00.000Z"
}

Output Fields

FieldTypeDescription
totalEstimatedRevenue30dnumberTotal estimated revenue in USD across all actors for the last 30 days
revenueByActorarrayComplete list of all actors with revenue details, sorted by revenue descending
revenueByActor[].namestringActor name
revenueByActor[].idstringActor ID
revenueByActor[].runs30dnumberNumber of runs in the last 30 days
revenueByActor[].ppePricenumber or nullPay-Per-Event price in USD, or null if no PPE pricing is configured
revenueByActor[].ppeNamestring or nullName of the PPE event (e.g., "result-scraped"), or null
revenueByActor[].estimatedRevenuenumberEstimated revenue in USD for the last 30 days (runs30d * ppePrice)
revenueByActor[].percentOfTotalnumberPercentage of total revenue this actor contributes (0-100)
topEarnersarrayTop 10 actors by estimated revenue (same structure as revenueByActor entries)
actorsWithNoPricingarrayActors that have runs but no PPE pricing configured (missed revenue). Each entry has name, id, runs30d. Sorted by runs descending.
pricingTierBreakdownobjectRevenue breakdown by pricing tier
pricingTierBreakdown.budgetobjectActors priced at $0.01-$0.05. Contains count, revenue, and priceRange.
pricingTierBreakdown.standardobjectActors priced at $0.05-$0.20. Contains count, revenue, and priceRange.
pricingTierBreakdown.premiumobjectActors priced at $0.20+. Contains count, revenue, and priceRange.
trackedAtstringISO 8601 timestamp of when the revenue tracking was performed

Programmatic Access

Python

from apify_client import ApifyClient
client = ApifyClient("apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx")
run = client.actor("ryanclinton/apifyforge-revenue-tracker").call(
run_input={"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
)
dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
revenue = dataset_items[0]
print(f"Total estimated revenue (30d): ${revenue['totalEstimatedRevenue30d']}")
print("\nTop earners:")
for actor in revenue["topEarners"][:5]:
print(f" {actor['name']}: ${actor['estimatedRevenue']} ({actor['percentOfTotal']}% of total)")
print(f"\nActors with no pricing: {len(revenue['actorsWithNoPricing'])}")
for actor in revenue["actorsWithNoPricing"][:5]:
print(f" {actor['name']}: {actor['runs30d']} runs (no PPE price set)")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
});
const run = await client.actor("ryanclinton/apifyforge-revenue-tracker").call({
apifyToken: "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const revenue = items[0];
console.log(`Total revenue (30d): $${revenue.totalEstimatedRevenue30d}`);
console.log(`Top earner: ${revenue.topEarners[0].name} - $${revenue.topEarners[0].estimatedRevenue}`);
console.log(`Actors without pricing: ${revenue.actorsWithNoPricing.length}`);
// Revenue concentration check
const topActorShare = revenue.topEarners[0]?.percentOfTotal ?? 0;
if (topActorShare > 50) {
console.log(`WARNING: ${topActorShare}% of revenue comes from a single actor`);
}

cURL

# Start the revenue tracker
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~apifyforge-revenue-tracker/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"}'
# Fetch results from the default dataset
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN"

How It Works

ApifyForge Revenue Tracker runs a multi-step pipeline to estimate revenue:

  1. Actor enumeration. Calls GET /v2/acts?my=true with pagination (100 per page) to retrieve every actor in your account.

  2. Detail fetching. For each actor, calls GET /v2/acts/{actorId} to retrieve the full actor detail, which includes the pricingInfos array. This is the only endpoint that exposes PPE pricing configuration.

  3. PPE price extraction. Scans the pricingInfos array for entries with pricingModel: "PAY_PER_EVENT" and extracts the pricePerEvent value. If no PPE pricing is configured, the price is null.

  4. Run count resolution. Uses stats.totalRuns30Days from the actor list endpoint when available. Falls back to fetching the last 100 runs via GET /v2/acts/{actorId}/runs and counting those within the 30-day window.

  5. Revenue calculation. For each actor with PPE pricing, computes estimatedRevenue = runs30d * ppePrice. Actors without PPE pricing get $0 estimated revenue.

  6. Tier classification. Categorizes each priced actor into one of three tiers:

    • Budget: PPE price <= $0.05
    • Standard: PPE price $0.05-$0.20
    • Premium: PPE price > $0.20
  7. Ranking and analysis. Sorts actors by revenue descending, extracts the top 10 earners, and identifies actors with runs but no pricing as missed revenue opportunities. Computes percentOfTotal for each actor.

  8. Output. Pushes the complete revenue report to the default dataset and charges one PPE event.

How Much Does It Cost?

ApifyForge Revenue Tracker uses Pay-Per-Event pricing at $0.10 per sync.

ScenarioEventsCost
One-time revenue check1$0.10
Weekly tracking (4x/month)4$0.40
Daily tracking (30x/month)30$3.00

Platform compute costs also apply. A typical revenue sync for 200 actors completes in under 90 seconds using 256 MB of memory.

Tips

  • Schedule weekly runs. Revenue data is most useful as a trend. Schedule weekly runs to track whether total revenue is growing and which actors are gaining or losing traction.
  • Fix the no-pricing list first. The actorsWithNoPricing array is sorted by run volume. The top entries represent the biggest missed revenue opportunities -- add PPE pricing to these actors immediately.
  • Watch revenue concentration. If one actor accounts for more than 40% of total revenue, consider it a risk. Diversify by promoting other actors or building complementary tools.
  • Tier strategy. Use the pricingTierBreakdown to ensure you have a healthy mix. Heavy concentration in the budget tier might mean you are underpricing.
  • Compare with competitor pricing. Pair Revenue Tracker with the ApifyForge Competitor Scan to see how your PPE prices compare to competing actors in the same categories.

Limitations

  • Revenue is estimated, not actual. The calculation assumes 1 run = 1 PPE event. In reality, some actors charge per result, per page, or per batch, which can produce more or fewer events per run. Actual Apify billing may differ.
  • Only PPE pricing is tracked. Actors using flat-rate pricing, subscription pricing, or free tiers are not included in revenue calculations.
  • Run count approximation. When stats.totalRuns30Days is not available, the actor falls back to sampling the last 100 runs. For actors with more than 100 runs in 30 days, the count will be capped at 100.
  • No historical revenue data. Each run gives you a snapshot. Historical trends require scheduling regular runs and analyzing the dataset over time.
  • Currency is USD. All revenue figures are in US dollars, matching Apify's pricing currency.

Frequently Asked Questions

How accurate is the revenue estimate? The estimate is based on runs30d * ppePrice. For actors that charge one event per run, this is highly accurate. For actors that charge per result (multiple events per run), actual revenue will be higher than estimated. Treat the output as a lower-bound estimate.

Why does an actor show ppePrice: null? This means the actor does not have Pay-Per-Event pricing configured. It may be free, use flat-rate pricing, or simply not have pricing set up yet. Check the actorsWithNoPricing array for actors that have traffic but no pricing -- these are revenue opportunities.

Can I track revenue for actors I do not own? No. The Revenue Tracker uses ?my=true to fetch only your own actors. To analyze competitor pricing, use the ApifyForge Competitor Scan actor instead.

What is the difference between budget, standard, and premium tiers? These are classification brackets based on PPE price: budget ($0.01-$0.05 per event), standard ($0.05-$0.20), and premium ($0.20+). They help you understand your pricing distribution and identify opportunities to adjust prices.

Integration with ApifyForge Dashboard

This actor powers the revenue panel of the ApifyForge dashboard. When connected, revenue data is visualized with bar charts showing per-actor revenue, pie charts for tier distribution, and trend lines for total revenue over time. The dashboard highlights missed revenue opportunities with a dedicated "unpaid traffic" widget showing actors that have runs but no pricing. Schedule this actor to run weekly for continuous revenue tracking and optimization.