Skip to content
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ sources/academy/**/exercises/storage
sources/academy/**/exercises/node_modules
sources/academy/**/exercises/package*.json
sources/academy/**/exercises/dataset.json
.claude/worktrees/
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,6 @@ If you want more details about PPE pricing, refer to our [PPE documentation](/pl

:::

### Pay-per-result pricing model

![pay per result model example](images/ppr-model.png)

- _How it works_: you charge users based on the number of results your Actor generates. You earn 80% of the revenue minus platform usage costs.
- _Profit calculation_: `profit = (0.8 * revenue) - platform usage costs`
- _Cost breakdown_:
- Compute unit: $0.3 per CU
- Residential proxies: $13 per GB
- SERPs proxy: $3 per 1,000 SERPs
- Data transfer (external): $0.20 per GB
- Dataset storage: $1 per 1,000 GB-hours
- _Example_: you set a price of $1 per 1,000 results. Two users generate 50,000 and 20,000 results, paying $50 and $20, respectively. If the platform usage costs are $5 and $2, your profit is $49.

:::info Pay-per-result details

If you want more details about PPR pricing, refer to our [PPR documentation](/platform/actors/publishing/monetize/pay-per-result).

:::

### Rental pricing model

<RentalSunset/>
Expand Down Expand Up @@ -148,26 +128,12 @@ Apify Store is like any other marketplace, so take a look at your competition th

Learn more about what makes a good readme here: [How to create an Actor README](/academy/actor-marketing-playbook/actor-basics/how-to-create-an-actor-readme)

### Pay-per-event (PPE), pay-per-result (PPR), or rental

Pay-per-event (PPE) gives you the most flexibility and growth potential. You can charge for any meaningful event your Actor performs (for example, page scraped, browser page opened, or an external API call). This makes costs predictable for users, lets you model value precisely, and is fully compatible with AI and MCP-based integrations.

Rental pricing allows you to charge a monthly fee for your Actor and users cover their own platform usage.

Pay-per-result (PPR) charges users based on the number of items your Actor adds to the dataset. This model works best when each dataset item represents clear value to the user - like scraped product listings, extracted contact information, or processed documents.

:::tip Additional benefits

Actors that implement PPE receive additional benefits, including increased visibility in Apify Store and enhanced discoverability.
### Adapt when needed

:::
Don’t be afraid to experiment with pricing, especially at the start. You can monitor your results in the dashboard and adjust if necessary. You can also choose to [pass platform usage costs to users](/platform/actors/publishing/monetize/pay-per-event#pass-platform-usage-to-users) while you’re still figuring out the right price.

To estimate pricing, run a few test runs and review the statistics in the Actor [**Analytics**](https://console.apify.com/actors?tab=analytics) tab.

### Adapt when needed

Don’t be afraid to experiment with pricing, especially at the start. You can monitor your results in the dashboard and adjust if necessary.

Keep an eye on SEO as well. If you monitor the volume of the keywords your Actor is targeting as well as how well your Actor's page is ranking for those keywords, you can estimate the number of people who actually end up trying your tool (aka conversion rate). If your keywords are getting volume, but conversions are lower than expected, it might point to a few issues It could be due to your pricing, a verbose README, or complex input. If users are bouncing right away, it makes sense to check out your pricing and your closest competitors to see where adjustments might help.

### Summary & a basic plan
Expand All @@ -184,15 +150,15 @@ Example of useful pricing estimates from the **Analytics** tab:

:::tip Use emails!

📫 Don't forget to set an email sequence to warn and remind your users about pricing changes. Learn more about emailing your users here: [Emails to Actor users]
📫 Don't forget to set an email sequence to warn and remind your users about pricing changes. Learn more about emailing your users here: [Emails to Actor users](/academy/actor-marketing-playbook/interact-with-users/emails-to-actor-users)

:::

## Resources

- Learn about [incentives behind monetization](https://apify.com/partners/actor-developers)
- Detailed guide to [setting up monetization models](https://docs.apify.com/academy/get-most-of-actors/monetizing-your-actor)
- Guide to [publishing Actors](https://docs.apify.com/platform/actors/publishing)
- Detailed guide to [setting up monetization models](/platform/actors/publishing/monetize)
- Guide to [publishing Actors](/platform/actors/publishing)
- Watch our webinar on how to [build, publish and monetize Actors](https://www.youtube.com/watch?v=4nxStxC1BJM)
- Read a blog post from our CEO on the [reasoning behind monetizing Actors](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/)
- Learn about the [Creator plan](https://apify.com/pricing/creator-plan), which allows you to create and freely test your own Actors for $1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ Actors on Apify Store can be public or private:
You can monetize your Actors using three different pricing models:

- Pay for usage: charge based on how much the Actor is used.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is also obsolete now isn't it?

- Pay per result: the price is based on the number of results produced, with the first few free.
- Pay per event: the price is based on specific events triggered by the Actor.
- Monthly billing: set a fixed monthly rental rate for using the Actor.

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Once set, the page URL should not be changed. Because of those two important rea

If you absolutely have to change the URL, you will have to communicate that fact to your users.

💡 Learn more about the easiest ways to communicate with your users: [Emails to Actor users]
💡 Learn more about the easiest ways to communicate with your users: [Emails to Actor users](/academy/actor-marketing-playbook/interact-with-users/emails-to-actor-users)

## How and where to set the Actor URL

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ While most Actors on our marketplace are web scrapers or crawlers, there are eve
By publishing your service or project at [Apify Store](https://apify.com/store) your project will benefit from:

1. _Expanded reach_: Your tool instantly becomes available to Apify's user community and connects with popular automation platforms like [Make](https://www.make.com), [n8n](https://n8n.io/), and [Zapier](https://zapier.com/).
2. _Multiple monetization paths_: Choose from flexible pricing models (monthly subscriptions, pay-per-result, or pay-per-event).
2. _Multiple monetization paths_: Choose from flexible pricing models (pay-per-event or monthly subscriptions).
3. _AI integration_: Your Actor can serve as a tool for AI agents through Apify's MCP (Model Context Protocol) server, creating new use cases and opportunities while you earn 80% of all revenues.

:::tip Open-Source Benefits
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Actor `name`, `version`, `buildTag`, and `environmentVariables` are currently on
| `storages.dataset` | Optional | You can define the schema of the items in your dataset under the `storages.dataset` field. This can be either an embedded object or a path to a JSON schema file. [Read more](/platform/actors/development/actor-definition/dataset-schema) about Actor dataset schemas. |
| `defaultMemoryMbytes` | Optional | Specifies the default amount of memory in megabytes to be used when the Actor is started. Can be an integer or a [dynamic memory expression string](./dynamic_actor_memory/index.md). |
| `minMemoryMbytes` | Optional | Specifies the minimum amount of memory in megabytes required by the Actor to run. Requires an _integer_ value. If both `minMemoryMbytes` and `maxMemoryMbytes` are set, then `minMemoryMbytes` must be equal or lower than `maxMemoryMbytes`. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. |
| `maxMemoryMbytes` | Optional | Specifies the maximum amount of memory in megabytes required by the Actor to run. It can be used to control the costs of run, especially when developing pay per result Actors. Requires an _integer_ value. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. |
| `maxMemoryMbytes` | Optional | Specifies the maximum amount of memory in megabytes required by the Actor to run. It can be used to control the costs of run. Requires an _integer_ value. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. |
| `usesStandbyMode` | Optional | Boolean specifying whether the Actor will have [Standby mode](../programming_interface/actor_standby.md) enabled. |
| `webServerSchema` | Optional | Defines an OpenAPI v3 schema for the web server running in the Actor. This can be either an embedded object or a path to a JSON schema file. Use this when your Actor starts its own HTTP server and you want to describe its interface. |
| `webServerMcpPath` | Optional | The HTTP endpoint path where the Actor exposes its MCP (Model Context Protocol) server functionality. When set, the Actor is recognized as an MCP server. For example, setting `"/mcp"` designates the `/mcp` endpoint as the MCP interface. This path becomes part of the Actor's stable URL when [Standby mode](../programming_interface/actor_standby.md) is enabled. |
Binary file not shown.
Binary file not shown.
5 changes: 2 additions & 3 deletions sources/platform/actors/publishing/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,10 @@ Publishing your Actor on Apify Store transforms your code, eliminating tradition

Packaging your software as an Actor allows you to launch new SaaS product faster and earn income through various monetization models that match your Actor's value proposition like:

- Fixed rental fee for continuous access
- Pay-per-result for usage-based pricing
- Pay-per-event for specific operations
- Fixed rental fee for continuous access

To learn more visit our [Actors in Store](https://docs.apify.com/platform/actors/running/actors-in-store#pricing-models) page.
To learn more, visit the [Actors in Store](/platform/actors/running/actors-in-store#pricing-models) page.

## Maintain public Actors

Expand Down
53 changes: 26 additions & 27 deletions sources/platform/actors/publishing/monetize/index.mdx
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
---
title: Monetize your Actor
description: Monetize your Actors on Apify Store by choosing a pricing model such as pay per result, pay per event, or a flat monthly rental fee for users.
description: Monetize your Actors on Apify Store by choosing a pricing model such as pay per event or a flat monthly rental fee for users.
slug: /actors/publishing/monetize
sidebar_position: 2
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import RentalSunset from '../../../../_partials/_rental-sunsetting.mdx';

Apify Store allows you to monetize your web scraping, automation and AI Agent projects by publishing them as paid Actors. This guide explains the available pricing models and how to get started.
<RentalSunset/>

Apify Store allows you to monetize your web scraping, automation, and AI agent projects by publishing them as paid Actors. This guide explains the available pricing models and how to get started.

## Pricing models

Actors in Apify Store can be published under one of the following pricing models:

1. _Free_: Users can run the Actor without any additional charges beyond the platform usage costs generated by the Actor.
1. _Pay per event (PPE)_: Users don't pay for the platform usage cost the Actor generates. Instead, they pay based on specific events that are programmatically triggered from the Actor's source code. These events are defined by the developer and can include actions such as generating a single result or starting an Actor.
1. _Pay per result (PPR)_: Users don't pay for the platform usage costs. Instead, they pay the developer based on the number of results produced by the Actor.
1. _Pay per event (PPE)_: Users pay for specific events that are programmatically triggered from the Actor's source code. These events are defined by the developer and can include actions such as generating a single result or starting an Actor. The developer also chooses whether to pass the platform usage costs to users.
1. _Rental_: Users pay for the platform usage costs. However, after a trial period, they need to pay a flat monthly fee to the developer to continue using the Actor.

For a detailed comparison of pricing models from the perspective of your users, refer to [Actors in Store](/platform/actors/running/actors-in-store) page.
Expand All @@ -25,16 +27,16 @@ For a detailed comparison of pricing models from the perspective of your users,

The following table compares the two main pricing models available for monetizing your Actors:

| Feature/Category | Rental | Pay-per-result (PPR) | Pay-per-event (PPE) |
|--------------------------|--------------------------------|-------------------------------|------------------------------------------------------------------|
| Revenue scalability | Capped at monthly fee | Unlimited, scales with usage | Unlimited, scales with usage |
| AI/MCP compatibility | ❌ Not compatible | ✅ Fully compatible | ✅ Fully compatible |
| User cost predictability | Unpredictable (rental + usage) | Predictable | Predictable |
| Store discounts | ❌ Single price only | ✅ Store discounts available | ✅ Store discounts available |
| Marketing boost | Standard visibility | Standard visibility | Priority store placement |
| Commission opportunities | Standard 20% | Standard 20% | Standard 20% |
| Custom event billing | Not available | Not available | ✅ Charge for any event |
| Per-result billing | Not available | ✅ Charge per dataset item | Optional (via event; automatic via `apify-default-dataset-item`) |
| Feature/Category | Pay-per-event (PPE) | Rental |
|--------------------------|------------------------------------------------------------------|--------------------------------|
| Revenue scalability | Unlimited, scales with usage | Capped at monthly fee |
| AI/MCP compatibility | ✅ Fully compatible | ❌ Not compatible |
| User cost predictability | Predictable | Unpredictable (rental + usage) |
| Store discounts | ✅ Store discounts available | ❌ Single price only |
| Marketing boost | Priority store placement | Standard visibility |
| Commission opportunities | Standard 20% | Standard 20% |
| Custom event billing | ✅ Charge for any event | Not available |
| Per-result billing | Optional (via event; automatic via `apify-default-dataset-item`) | Not available |

## Set up monetization

Expand All @@ -46,15 +48,12 @@ Choose the pricing model for your Actor.
![Monetization wizard](../images/monetization_wizard.png)
Follow the monetization wizard to configure your pricing model.
<Tabs>
<TabItem value="Rental" label="Rental">
![rental monetization wizard](../images/rental-wizard.png)
</TabItem>
<TabItem value="Pay-per-result" label="Pay-per-result">
![ppr monetization wizard](../images/ppr-wizard.png)
</TabItem>
<TabItem value="Pay-per-event" label="Pay-per-event">
![ppe monetization wizard](../images/ppe-wizard.png)
</TabItem>
<TabItem value="Rental" label="Rental">
![rental monetization wizard](../images/rental-wizard.png)
</TabItem>
</Tabs>

### Change monetization
Expand All @@ -65,26 +64,26 @@ Most changes take effect **immediately**. However, **major changes** require a 1

**Major changes** that require 14-day notice include:

- Changing the pricing model (e.g., from rental to pay-per-result)
- Changing the pricing model (e.g., from rental to pay-per-event)
- Increasing prices
- Adding new pay-per-event charges
- Adding new events

All other changes (such as decreasing prices, adjusting descriptions, or removing pay-per-event charges) take effect immediately.
All other changes (such as decreasing prices, adjusting descriptions, or removing events) take effect immediately.

:::important Frequency of major monetization adjustments

You can make major monetization changes to each Actor only **once per month**. After making a major change, you must wait until it takes effect (14 days) plus an additional period before making another major change. For further information & guidelines, please refer to our [Terms & Conditions](/legal/store-publishing-terms-and-conditions)
You can make major monetization changes to each Actor only **once per month**. After making a major change, you must wait until it takes effect (14 days) plus an additional period before making another major change. For further information & guidelines, please refer to the [Terms & Conditions](/legal/store-publishing-terms-and-conditions)

:::

## Monthly payouts and analytics

Payout invoices are automatically generated on the 11th of each month, summarizing the profits from all your Actors for the previous month.
In accordance with our [Terms & Conditions](/legal/store-publishing-terms-and-conditions), only funds from legitimate users who have already paid are included in the payout invoice.
In accordance with the [Terms & Conditions](/legal/store-publishing-terms-and-conditions), only funds from legitimate users who have already paid are included in the payout invoice.

:::note How negative profits are handled

If your PPR or PPE Actor's price doesn't cover its monthly platform usage costs, it will have a negative profit. When this occurs, we automatically set that Actor's profit to $0 for the month. This ensures a single Actor's loss never reduces your total payout.
If your PPE Actor's price doesn't cover its monthly platform usage costs, it will have a negative profit. When this occurs, we automatically set that Actor's profit to $0 for the month. This ensures a single Actor's loss never reduces your total payout.

:::

Expand All @@ -94,7 +93,7 @@ If no action is taken, the payout will be automatically approved on the 14th, wi
- $20 for PayPal
- $100 for other payout methods

If the monthly profit does not meet these thresholds, as per our [Terms & Conditions](/legal/store-publishing-terms-and-conditions), the funds will roll over to the next month until the threshold is reached.
If the monthly profit does not meet these thresholds, as per the [Terms & Conditions](/legal/store-publishing-terms-and-conditions), the funds will roll over to the next month until the threshold is reached.

## Handle free users

Expand Down
Loading
Loading