diff --git a/sources/academy/platform/get_most_of_actors/store_basics/how_actor_monetization_works.md b/sources/academy/platform/get_most_of_actors/store_basics/how_actor_monetization_works.md index d5a026693..cc905dc92 100644 --- a/sources/academy/platform/get_most_of_actors/store_basics/how_actor_monetization_works.md +++ b/sources/academy/platform/get_most_of_actors/store_basics/how_actor_monetization_works.md @@ -23,19 +23,35 @@ Monetizing your Actor on the Apify platform involves several key steps: ## Monetization models -### Rental pricing model +### Pay-per-event pricing model -![rental model example](images/rental-model.png) +![pay per event model example](images/ppe-model.png) -- _How it works_: you offer a free trial period and set a monthly fee. Users on Apify paid plans can continue using the Actor after the trial. You earn 80% of the monthly rental fees. -- _Example_: you set a 7-day free trial and $30/month rental. If 3 users start using your Actor: - - 1st user on a paid plan pays $30 after the trial (you earn $24). - - 2nd user starts their trial but pays next month. - - 3rd user on a free plan finishes the trial without upgrading to a paid plan and can’t use the Actor further. +- _How it works_: you charge users based on specific events triggered programmatically by your Actor's code. You earn 80% of the revenue minus platform usage costs. +- - _Profit calculation_: `profit = (0.8 * revenue) - platform usage costs` +- _Event cost example_: you set the following events for your Actor: + - `Actor start per 1 GB of memory` at $0.005 + - `Pages scraped` at $0.002 + - `Page opened with residential proxy` at $0.002 - this is on top of `Pages scraped` + - `Page opened with a browser` at $0.002 - this is on top of `Pages scraped` +- _Example_: + - User A: + - Started the Actor 10 times = $0.05 + - Scraped 1,000 pages = $2.00 + - 500 of those were scraped using residential proxy = $1.00 + - 300 of those were scraped using browser = $0.60 + - This comes up to $3.65 of total revenue + - User B: + - Started the Actor 5 times = $0.025 + - Scraped 500 pages = $1.00 + - 200 of those were scraped using residential proxy = $0.40 + - 100 of those were scraped using browser = $0.20 + - This comes up to $1.625 of total revenue + - That means if platform usage costs are $0.365 for user A and $0.162 for user B your profit is $4.748 -:::info Rental pricing details +:::info Pay-per-event details -If you want more details about rental pricing, refer to our [rental pricing documentation](/platform/actors/publishing/monetize/rental). +If you want more details about PPE pricing, refer to our [PPE documentation](/platform/actors/publishing/monetize/pay-per-event). ::: @@ -59,35 +75,19 @@ If you want more details about PPR pricing, refer to our [PPR documentation](/pl ::: -### Pay-per-event pricing model +### Rental pricing model -![pay per event model example](images/ppe-model.png) +![rental model example](images/rental-model.png) -- _How it works_: you charge users based on specific events triggered programmatically by your Actor's code. You earn 80% of the revenue minus platform usage costs. -- - _Profit calculation_: `profit = (0.8 * revenue) - platform usage costs` -- _Event cost example_: you set the following events for your Actor: - - `Actor start per 1 GB of memory` at $0.005 - - `Pages scraped` at $0.002 - - `Page opened with residential proxy` at $0.002 - this is on top of `Pages scraped` - - `Page opened with a browser` at $0.002 - this is on top of `Pages scraped` -- _Example_: - - User A: - - Started the Actor 10 times = $0.05 - - Scraped 1,000 pages = $2.00 - - 500 of those were scraped using residential proxy = $1.00 - - 300 of those were scraped using browser = $0.60 - - This comes up to $3.65 of total revenue - - User B: - - Started the Actor 5 times = $0.025 - - Scraped 500 pages = $1.00 - - 200 of those were scraped using residential proxy = $0.40 - - 100 of those were scraped using browser = $0.20 - - This comes up to $1.625 of total revenue - - That means if platform usage costs are $0.365 for user A and $0.162 for user B your profit is $4.748 +- _How it works_: you offer a free trial period and set a monthly fee. Users on Apify paid plans can continue using the Actor after the trial. You earn 80% of the monthly rental fees. +- _Example_: you set a 7-day free trial and $30/month rental. If 3 users start using your Actor: + - 1st user on a paid plan pays $30 after the trial (you earn $24). + - 2nd user starts their trial but pays next month. + - 3rd user on a free plan finishes the trial without upgrading to a paid plan and can’t use the Actor further. -:::info Pay-per-event details +:::info Rental pricing details -If you want more details about PPE pricing, refer to our [PPE documentation](/platform/actors/publishing/monetize/pay-per-event). +If you want more details about rental pricing, refer to our [rental pricing documentation](/platform/actors/publishing/monetize/rental). ::: diff --git a/sources/platform/actors/publishing/monetize/index.mdx b/sources/platform/actors/publishing/monetize/index.mdx index 4d2d19e01..35a11975c 100644 --- a/sources/platform/actors/publishing/monetize/index.mdx +++ b/sources/platform/actors/publishing/monetize/index.mdx @@ -19,9 +19,9 @@ Apify Store allows you to monetize your web scraping, automation and AI Agent pr 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. _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. -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 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. _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. diff --git a/sources/platform/actors/publishing/monetize/pay_per_event.mdx b/sources/platform/actors/publishing/monetize/pay_per_event.mdx index 5d0bc1be7..c03acf0b4 100644 --- a/sources/platform/actors/publishing/monetize/pay_per_event.mdx +++ b/sources/platform/actors/publishing/monetize/pay_per_event.mdx @@ -2,7 +2,7 @@ title: Pay per event description: Learn how to monetize your Actor with pay-per-event (PPE) pricing, charging users for specific actions like Actor starts, dataset items, or API calls, and understand how to set profitable, transparent event-based pricing. slug: /actors/publishing/monetize/pay-per-event -sidebar_position: 3 +sidebar_position: 1 --- **Learn how to monetize your Actor with pay-per-event (PPE) pricing, charging users for specific actions like Actor starts, dataset items, or API calls, and understand how to set profitable, transparent event-based pricing.** @@ -12,7 +12,7 @@ sidebar_position: 3 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The PPE 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. +The PPE pricing model offers a flexible monetization option for Actors on Apify Store. Unlike [pay per result](/platform/actors/publishing/monetize/pay-per-result), PPE allows you to charge users based on specific events triggered programmatically by your Actor's code. 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. @@ -108,7 +108,7 @@ async def charge_for_api_product_detail(): async def main(): await Actor.init() - + # API call, or any other logic that you want to charge for charge_result = await charge_for_api_product_detail() @@ -185,7 +185,7 @@ Set memory limits using `minMemoryMbytes` and `maxMemoryMbytes` in your [`actor. ```json { - "actorSpecification": 1, + "actorSpecification": 1, "name": "name-of-my-scraper", "version": "0.0", "minMemoryMbytes": 512, @@ -213,7 +213,7 @@ import { Actor } from 'apify'; const processUrl = async (url) => { const response = await fetch(url); - + if (response.status === 404) { // Charge for the work done and return error item in one call await Actor.pushData({ @@ -221,7 +221,7 @@ const processUrl = async (url) => { error: "404", errorMessage: "Page not found" }, 'scraped-result'); - + return; } @@ -232,7 +232,7 @@ await Actor.init(); const input = await Actor.getInput(); const { urls } = input; - + for (const url of urls) { await processUrl(url); } @@ -251,7 +251,7 @@ import requests async def process_url(url): response = requests.get(url) - + if response.status_code == 404: # Charge for the work done and return error item in one call await Actor.push_data({ @@ -259,22 +259,22 @@ async def process_url(url): 'error': '404', 'errorMessage': 'Page not found' }, 'scraped-result') - + return # Rest of the process_url function async def main(): await Actor.init() - + input_data = await Actor.get_input() urls = input_data.get('urls', []) - + for url in urls: await process_url(url) - + # Rest of the Actor logic - + await Actor.exit() ``` @@ -294,7 +294,7 @@ However, we acknowledge that some events don't produce tangible results (such as Examples: - _`post` event_: Each charge adds one social media post to the dataset -- _`profile` event_: Each charge adds one user profile to the dataset +- _`profile` event_: Each charge adds one user profile to the dataset - _`processed-image` event_: Each charge adds one processed image to the dataset - _`ai-analysis` event_: Each charge processes one document through an AI workflow (no tangible output, but valuable processing) diff --git a/sources/platform/actors/publishing/monetize/pricing_and_costs.mdx b/sources/platform/actors/publishing/monetize/pricing_and_costs.mdx index 4ec96447a..55fa1ba9f 100644 --- a/sources/platform/actors/publishing/monetize/pricing_and_costs.mdx +++ b/sources/platform/actors/publishing/monetize/pricing_and_costs.mdx @@ -2,7 +2,7 @@ title: Pricing and costs description: Learn how to set Actor pricing and calculate your costs, including platform usage rates, discount tiers, and profit formulas for PPE and PPR monetization models. slug: /actors/publishing/monetize/pricing-and-costs -sidebar_position: 3 +sidebar_position: 4 --- **Learn how to set Actor pricing and calculate your costs, including platform usage rates, discount tiers, and profit formulas for PPE and PPR monetization models.** diff --git a/sources/platform/actors/publishing/monetize/rental.mdx b/sources/platform/actors/publishing/monetize/rental.mdx index 204cd1d74..77b472367 100644 --- a/sources/platform/actors/publishing/monetize/rental.mdx +++ b/sources/platform/actors/publishing/monetize/rental.mdx @@ -2,7 +2,7 @@ title: Rental pricing model description: Learn how to monetize your Actor with the rental pricing model, offering users a free trial and a flat monthly fee, and understand how profit is calculated and the limitations of this approach. slug: /actors/publishing/monetize/rental -sidebar_position: 1 +sidebar_position: 3 --- **Learn how to monetize your Actor with the rental pricing model, offering users a free trial and a flat monthly fee, and understand how profit is calculated and the limitations of this approach.** @@ -46,7 +46,7 @@ We recommend using the [pay-per-result](/platform/actors/publishing/monetize/pay 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: - _User 1 (paid plan)_: Starts free trial on the 15th -- _User 2 (paid plan)_: Starts free trial on the 25th +- _User 2 (paid plan)_: Starts free trial on the 25th - _User 3 (free plan)_: Starts 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.