Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions sources/platform/actors/publishing/monetize.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ sidebar_position: 2
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

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

## Pricing models

Expand All @@ -32,9 +32,9 @@ With the rental model, you can specify a free trial period and a monthly rental

You make your Actor rental with 7-day free trial and then $30/month. During the first calendar month, three users start to use your Actor:

1. First user, on the Apify paid plan, starts the free trial on 15th
1. Second user, on the Apify paid plan, starts the free trial on 25th
1. Third user, on the Apify free plan, start the free trial on 20th
1. First user, on the Apify paid plan, starts the free trial on the 15th
1. Second user, on the Apify paid plan, starts the free trial on the 25th
1. Third user, on the Apify free plan, starts the free trial on the 20th

The first user pays their first rent 7 days after the free trial, i.e., on the 22nd of the month. The second user only starts paying the rent next month. The third user is on the Apify free plan, so after the free trial ends on the 27th of the month, they are not charged and cannot use the Actor further until they get a paid plan. Your profit is computed only from the first user. They were charged $30, so 80% of this goes to you, i.e., _0.8 * 30 = $24_.
</details>
Expand Down Expand Up @@ -69,7 +69,7 @@ Read more about Actors on Apify Store and different pricing models from the pers
<details>
<summary>Example - pay-per-result pricing model</summary>

You make your Actor pay-per-result and set the price to be $1/1,000 results. During the first month, two users on Apify paid plans use your Actor to get 50,000 and 20,000 results, costing them $50 and $20, respectively. Let's say the underlying platform usage for the first user is $5 and for the second $2. Third user, this time on Apify free plan, uses the Actor to get 5,000 results, with underlying platform usage of $0.5.
You make your Actor pay-per-result and set the price to be $1/1,000 results. During the first month, two users on Apify paid plans use your Actor to get 50,000 and 20,000 results, costing them $50 and $20, respectively. Let's say the underlying platform usage for the first user is $5 and for the second $2. A third user, this time on an Apify free plan, uses the Actor to get 5,000 results, with underlying platform usage of $0.5.

Your profit is computed only from the first two users, since they are on Apify paid plans. The revenue for the first user is $50 and for the second $20, i.e., total revenue is $70. The total underlying cost is _$5 + $2 = $7_. Since your profit is 80% of the revenue minus the cost, it would be _0.8 * 70 - 7 = $49_.
</details>
Expand All @@ -84,9 +84,9 @@ To ensure profitable operation:

### Pay-per-event pricing model

The pay-per-event pricing model offers a flexible monetization option for Actors on Apify Store. Unlike the pay-per-result, PPE allows you to charge users based on specific events triggered programmatically by your Actor's code.
The pay-per-event pricing model offers a flexible monetization option for Actors on Apify Store. Unlike pay per result, PPE allows you to charge users based on specific events triggered programmatically by your Actor's code.

#### PPE vs PPR
#### PPE vs. PPR

Unlike PPR, which charges based on the number of results produced, PPE lets you define pricing for individual events. You can charge for specific events directly from your Actor by calling the PPE charging API. Common events include Actor start, dataset item creation, and external API calls.

Expand All @@ -101,7 +101,7 @@ Your profit is calculated as follows:
where:

- _Revenue_: The amount charged for events via the PPE [API](/api/v2/post-charge-run) or through [JS](/sdk/js/reference/class/Actor#charge)/[Python](/sdk/python/reference/class/Actor#charge) SDK. You receive 80% of this revenue.
- _Platform costs_: The underlying platform usage costs for running the Actor, calculated using the same unit pricing as PPR.
- _Platform costs_: The underlying platform usage costs for running the Actor, are calculated using the same unit pricing as PPR.

Only paid user activity is included in profit calculations.

Expand All @@ -111,21 +111,21 @@ Only paid user activity is included in profit calculations.
1. _Define clear events_: break your Actor's functionality into measurable, chargeable events.
1. _Common use cases_:
1. _For scraping_: combine Actor start and dataset items pricing to reflect setup and per-result cost.
1. _Beyond scraping_: Account for intergrations with external systems or external API calls.
1. _Beyond scraping_: Account for integrations with external systems or external API calls.
1. _External API costs_: Account for additional processing costs.
1. _Test your pricing_: Run your Actor and analyze cost-effectiveness using a special dataset.
1. _Communicate value_: Ensure pricing reflects the value provided and is competetive.
1. _Communicate value_: Ensure pricing reflects the value provided and is competitive.

#### Best practices for PPE Actors

- Set memory limits in your [`actor.json`](/platform/actors/development/actor-definition/actor-json) file to control platform usage costs
- Avoid duplicate charges by not calling the start Actor event during migration.
- Ensure users are not charged beyond their set maximum. The [`ChargingManager`](https://github.com/metalwarrior665/actor-charge-manager-poc) or our SDKs ([JS](/sdk/js/reference/class/ChargingManager) and [Python](/sdk/python/reference/class/ChargingManager)) can handle this logic.
- Use idempotency keys in API calls to prevent double charges.
- Try to limit the number of evernt. Fewer events makes it easier for users to understand your pricing.
- Try to make your event have tangible artifacts that users can see and understand (this might be not possible when using external APIs) i.e:
- Try to limit the number of events. Fewer events make it easier for users to understand your pricing.
- Try to make your event have tangible artifacts that users can see and understand (this might not be possible when using external APIs) i.e:
- Get a record
- Save it to dataset
- Save it to a dataset
- etc.

:::note `ChargingManager` usage
Expand All @@ -138,7 +138,7 @@ You can also choose not to use it, but then you must handle API integration and

## Setting up monetization

Navigate to your [Actor page](https://console.apify.com/actors?tab=my) in Apify Console, choose Actor that you want to monetize, and select the Publication tab.
Navigate to your [Actor page](https://console.apify.com/actors?tab=my) in Apify Console, choose the Actor that you want to monetize, and select the Publication tab.
![Monetization section](./images/monetization-section.png)
Open the Monetization section and complete your billing and payment details.
![Set up monetization](./images/monetize_actor_set_up_monetization.png)
Expand All @@ -159,7 +159,7 @@ Follow the monetization wizard to configure your pricing model.

## Changing monetization

You can change the monetization setting of your Actor by using the same wizard as for the setup in the **Monetization** section of your Actor's **Publication** tab. Any changes made to an already published Actor will take _14 days_ to come in effect, so that the users of your Actor have time to prepare.
You can change the monetization setting of your Actor by using the same wizard as for the setup in the **Monetization** section of your Actor's **Publication** tab. Any changes made to an already published Actor will take _14 days_ to come into effect, so that the users of your Actor have time to prepare.

:::important Frequency of monetization adjustments

Expand Down
Loading