You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
12
+
Apify Store allows you to monetize your web scraping, automation, and AI agent projects by publishing them as paid Actors.
13
13
14
14
## Pricing models
15
15
16
-
Actors in Apify Store can be published under one of the following pricing models:
16
+
You can publish Actors on Apify Store under one of the following pricing models:
17
17
18
-
-_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.
19
-
-_Pay per usage_: Users can run the Actor without any additional charges beyond the platform usage costs generated by the Actor.
20
-
-_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.
21
-
22
-
<RentalSunset/>
18
+
-[Pay per event (PPE)](/platform/actors/publishing/monetize/pay-per-event): Users pay for specific events that are programmatically triggered from the Actor's source code. You can define these events and include actions such as generating a single result or starting an Actor. You can also choose whether to pass the platform usage costs on to users.
19
+
- Pay per usage: Users can run the Actor without any additional charges beyond the platform usage costs generated by the Actor.
23
20
24
21
For a detailed comparison of pricing models from the perspective of your users, see [Actors in Store](/platform/actors/running/actors-in-store).
25
22
26
-
## Key benefits
27
-
28
-
The following table compares the two main pricing models available for monetizing your Actors:
| Store discounts | ✅ Store discounts available | ❌ Single price only |
36
-
| Marketing boost | Priority store placement | Standard visibility |
37
-
| Commission opportunities | Standard 20% | Standard 20% |
38
-
| Custom event billing | ✅ Charge for any event | Not available |
39
-
| Per-result billing | Optional (via event; automatic via `apify-default-dataset-item`) | Not available |
40
-
41
23
## Set up monetization
42
24
43
-
To monetize your Actor:
25
+
To set up monetization for your Actor, first complete your billing and payment details. Then, you can define the pricing for your Actor:
44
26
45
27
1. Log in to [Apify Console](https://console.apify.com).
46
28
1. In the left-side panel, go to **Development** > **My Actors**.
47
29
1. From the table, select the Actor you want to monetize.
48
30
1. Go to the **Publication** tab.
49
-
1. Complete each section with required information.
50
-
- In **Monetization** section, complete your billing and payment details, and choose your [pricing model](#pricing-models).
51
-
1. Select **Publish on Store**.
31
+
1. In **Monetization** section, select **Set up monetization**.
32
+
33
+
The monetization setup consists of three steps:
34
+
35
+
1. In the **Actor pricing** step, you can:
36
+
- Modify or delete the [`apify-actor-start`](/platform/actors/publishing/monetize/pay-per-event#synthetic-start-event) event.
37
+
- Modify or delete the [`apify-default-dataset-item`](/platform/actors/publishing/monetize/pay-per-event#synthetic-default-dataset-item-event) event.
38
+
- Define [custom events](/platform/actors/publishing/monetize/pay-per-event#actor-events) and their prices.
39
+
-[Transfer the platform usage costs on to users](/platform/actors/publishing/monetize/pay-per-event#platform-usage-costs).
40
+
- Set the minimal cost that users can choose as max cost per run.
41
+
1. In the **Primary event** step, select the event that best represents the main value of your Actor. By default, the dataset event or the only existing event is used.
42
+
1. In the **Review** step, verify the final pricing for your Actor before confirming.
Copy file name to clipboardExpand all lines: sources/platform/actors/publishing/monetize/pay_per_event.mdx
+31-20Lines changed: 31 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,11 +8,24 @@ sidebar_position: 1
8
8
importTabsfrom'@theme/Tabs';
9
9
importTabItemfrom'@theme/TabItem';
10
10
11
-
The PPE pricing model offers a flexible monetization option for Actors on Apify Store as it allows you to charge users based on specific events triggered programmatically by your Actor's code.
11
+
The pay per event (PPE) pricing model offers a flexible monetization option for Actors on Apify Store:
12
12
13
-
PPE lets you define pricing for individual events. You can charge for specific events directly from your Actor using the [JS](/sdk/js/reference/class/Actor#charge)/[Python](/sdk/python/reference/class/Actor#charge) SDK, or by calling the [PPE charging API](/api/v2/post-charge-run) directly. Common events include Actor start, dataset item creation, and external API calls.
13
+
- You can charge users based on specific events triggered programmatically by your Actor's code. Common events include starting an Actor, creating a dataset item, or calling an external API.
14
+
- You can define different pricing for individual events.
15
+
- You can charge for specific events directly from your Actor using the [JS](/sdk/js/reference/class/Actor#charge) or [Python](/sdk/python/reference/class/Actor#charge) SDK, or by calling the [PPE charging API](/api/v2/post-charge-run) directly.
14
16
15
-
The details on how your cost is computed can be found in [Example of a PPE pricing](#example-of-a-ppe-pricing).
17
+
See the key benefits of the PPE pricing model:
18
+
19
+
| Category | Pay per event (PPE) |
20
+
| --- | --- |
21
+
| Revenue scalability | Unlimited, scales with usage |
@@ -54,21 +67,19 @@ An Actor's negative net profit does not affect the positive profit of another Ac
54
67
1._Test your pricing_: Run your Actor and analyze cost-effectiveness using a special dataset.
55
68
1._Communicate value_: Ensure pricing reflects the value provided and is competitive.
56
69
57
-
## Pass platform usage to users
70
+
## Pass platform usage costs on to users{#platform-usage-costs}
58
71
59
-
During initial development or when testing pricing strategies, you can pass the platform usage costs directly to users to avoid negative profit margins. Users then pay for both the defined events and the underlying platform usage. Use this approach temporarily until you determine accurate event prices.
72
+
To avoid negative profit margins during initial development or when testing pricing strategies, you can pass the platform usage costs on to users. As a result, users pay for both the defined events and the underlying platform usage.
60
73
61
74
:::caution Reduced pricing transparency
62
75
63
-
Charging platform usage separately is less transparent for users and may discourage them from using your Actor. This also negatively impacts your [**Actor quality score**](../quality-score). Turn off this option once you determine accurate event prices.
76
+
Charging platform usage separately is less transparent for users and may discourage them from using your Actor. It also negatively impacts your [**Actor quality score**](../quality-score). Use this approach only until you determine accurate event prices.
64
77
65
78
:::
66
79
67
-
Use the **Pay per event + usage** toggle to enable or disable this option in the monetization flow.
68
-
69
-

80
+
To pass platform usage costs on to users, in the **Actor pricing** step of the [monetization setup](/platform/actors/publishing/monetize#set-up-monetization), switch on the **Pay per event + usage** toggle.
70
81
71
-
The option can be turned off at any time with immediate effect, as it is a positive change for the user. Turning it on will take 14 days.
82
+
Turning this option on takes 14 days to take effect. However, you can turn it off immediately, as it is a positive change for users.
72
83
73
84
## Respect user spending limits
74
85
@@ -148,11 +159,11 @@ When using [Crawlee](https://crawlee.dev/), use `crawler.autoscaledPool.abort()`
148
159
149
160
Use the [Apify SDKs](/sdk) (JS or Python) or the [`apify actor charge`](/cli/docs/next/reference#apify-actor-charge-eventname) when using the Apify CLI to simplify PPE implementation into your Actor. SDKs help you handle pricing, usage tracking, idempotency keys, API errors, and, event charging via an API. You can also choose not to use it, but then you must handle API integration and possible edge cases manually.
150
161
151
-
### Use synthetic start event `apify-actor-start`
162
+
### Use synthetic start event `apify-actor-start`{#synthetic-start-event}
152
163
153
164
:::info Synthetic Actor start event recommended
154
165
155
-
We recommend using the synthetic Actor start event in PPE Actors. It benefits both you and your users.
166
+
Apify recommends using the synthetic Actor start event in all Actors. It benefits both you and your users.
156
167
157
168
:::
158
169
@@ -177,23 +188,23 @@ The default price of the event is set intentionally low. This pricing means that
177
188
- You can increase the price of the event if you wish, but you _won't get more free compute_.
178
189
- You can delete the event if you wish, but if you do, you will _lose the free 5 seconds_ of compute.
179
190
180
-
#### Synthetic start event for new Actors
181
-
182
-
For new Actors, this event is added automatically as you can see on the following screen:
191
+
#### Synthetic start event for new and existing Actors
183
192
184
-

193
+
For new Actors, the `apify-actor-start` event is added automatically.
185
194
186
-
#### Synthetic start event for existing Actors
195
+
For existing Actors, you can add this event manually:
187
196
188
-
If you have existing Actors, you can add this event manually in Apify Console in the **Publication** tab.
197
+
1. Access your Actor's [monetization setup](/platform/actors/publishing/monetize#set-up-monetization).
198
+
1. In the **Actor pricing** step, under **Event name**, add `apify-actor-start`.
199
+
1. Complete the remaining event details: title, description, and price.
189
200
190
201
#### Synthetic start event for Actors with start event
191
202
192
203
Your Actor might already have a start event defined, such as `actor-start` or another variant of the event name. In this case, you can choose whether to use the synthetic start event or keep the existing start event.
193
204
194
205
If you want to use the synthetic start event, remove the existing start event from your Actor and add the synthetic start event in Apify Console in the **Publication** tab.
195
206
196
-
### Use synthetic default dataset item event `apify-default-dataset-item`
207
+
### Use synthetic default dataset item event `apify-default-dataset-item`{#synthetic-default-dataset-item-event}
197
208
198
209
The `apify-default-dataset-item` synthetic event charges users for each item written to the run's default dataset. It lets you align PPE pricing with per-result use cases without adding charging code to your Actor.
199
210
@@ -312,7 +323,7 @@ async def main():
312
323
313
324
Try to limit the number of events. Fewer events make it easier for users to understand your pricing and predict their costs.
314
325
315
-
### Make events produce visible results
326
+
### Make events produce visible results{#actor-events}
316
327
317
328
For Actors that produce data, events should map to something concrete in the user's dataset or storage.
0 commit comments