From 8de3d254609031cc715c92046fdcb7793674d93e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:12:18 +0100 Subject: [PATCH 1/6] docs: update monetizy your Actor section rework structure rephrase for better understanding & conciseness add details tag to handle examples add new admonitions to highlight important information --- .../monetizing_your_actor.md | 183 +++++++----------- 1 file changed, 72 insertions(+), 111 deletions(-) diff --git a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md index b19b8f6e3f..d116b1aab0 100644 --- a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md +++ b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md @@ -5,169 +5,130 @@ sidebar_position: 5 slug: /get-most-of-actors/monetizing-your-actor --- -# Monetizing your Actor - **Learn how you can monetize your web scraping and automation projects by publishing Actors to users in Apify Store.** --- -When publishing your Actor on the Apify platform you have the choice to make it a **Paid Actor** and get paid by users benefiting from your tool. When making your Actor paid, you can choose from two pricing models: **rental** and **pay-per-result**. +When you publish you publish your Actor on the Apify platform, you have the option to make it a _Paid Actor_ and earn revenue from users who benefit from your tool. You can choose between two pricing models: + +- Rental +- Pay-per-result ## Rental pricing model -When you choose to make your Actor rental, you will specify the length of the free trial and a monthly rental price. Any user that wants to use your Actor will need to first activate the free trial, and once that's concluded, they will be charged the monthly rent set by you. Note that after the free trial, the user will need to have one of Apify's [paid plans](https://apify.com/pricing) to be able to pay the monthly rental and use the Actor further. +With the rental model, you can specify a free trial period and a monthly rental price. After the trial, users with an [Apify paid plan](https://apify.com/pricing) can continue using your Actor by paying the monthly fee. You can receive 80% of the total rental fees collected each month. + +
+ Example - rental pricing model -At the end of each month, we will then add up all rental fees collected in that month, and 80% of the total goes to you. +You make your Actor rental with 7 days free trial and then $30/month. During the first calendar month, three users start to use your Actor: -> **Example - rental pricing model** -> -> You make your Actor rental with 7 days free trial and then $30/month. During the first calendar month, three users start to use your Actor. -> ->1. first user, on Apify paid plan, starts the free trial on 15th ->2. second user, on Apify paid plan, starts the free trial on 25th ->3. third user, on Apify free plan, start the free trial on 20th -> -> The first user pays their first rent 7 days after the free trial, i.e. on 22nd. The second user only starts paying the rent next month. The third user is on Apify free plan, so after the free trial ends on 27th, they are not charged and cannot use the Actor further until they get a paid plan. Hence, 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`. +1. First user, on Apify paid plan, starts the free trial on 15th +2. Second user, on Apify paid plan, starts the free trial on 25th +3. Third user, on Apify free plan, start the free trial on 20th + +The first user pays their first rent 7 days after the free trial, i.e., on 22nd. The second user only starts paying the rent next month. The third user is on Apify free plan, so after the free trial ends on 27th, 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`. +
## Pay-per-result pricing model -If you make your Actor pay-per-result instead, you will set the price per 1,000 results, and users will be charged for your Actor solely based on the number of results your Actor produces. That's your _revenue_. The underlying [platform usage](https://docs.apify.com/platform/actors/running/usage-and-resources) the Actor generates, using the pay-per-result unit pricing defined below, is your _cost_. Your profit which is then paid to you is computed as 80% of the revenue minus the costs, i.e. `(0.8 * revenue) - costs = profit`. This profit is also paid out monthly. +In this model, you set a price per 1000 results. Users are charged based on the number of results your Actor produces. Your profit is calculated as 80% of the revenue minus platform usage costs. The formula is: + +`(0.8 * revenue) - costs = profit` ### Pay-per-result unit pricing for cost computation -| Service | Unit price | -|---------------------------------|----------------------------| -| Compute unit | **$0.4** / CU | -| Residential proxies | **$13** / GB | -| SERPs proxy | **$3** / 1,000 SERPs | -| Data transfer - external | **$0.20** / GB | -| Data transfer - internal | **$0.05** / GB | -| Dataset - timed storage | **$1.00** / 1,000 GB-hours | -| Dataset - reads | **$0.0004** / 1,000 reads | -| Dataset - writes | **$0.005** / 1,000 writes | +| Service | Unit price | +|:---|:---| +| Compute unit | **$0.4** / CU | +| Residential proxies | **$13** / GB | +| SERPs proxy | **$3** / 1,000 SERPs | +| Data transfer - external | **$0.20** / GB | +| Data transfer - internal | **$0.05** / GB | +| Dataset - timed storage | **$1.00** / 1,000 GB-hours | +| Dataset - reads | **$0.0004** / 1,000 reads | +| Dataset - writes | **$0.005** / 1,000 writes | | Key-value store - timed storage | **$1.00** / 1,000 GB-hours | -| Key-value store - reads | **$0.005** / 1,000 reads | -| Key-value store - writes | **$0.05** / 1,000 writes | -| Key-value store - lists | **$0.05** / 1,000 lists | -| Request queue - timed storage | **$4.00** / 1,000 GB-hours | -| Request queue - reads | **$0.004** / 1,000 reads | -| Request queue - writes | **$0.02** / 1,000 writes | +| Key-value store - reads | **$0.005** / 1,000 reads | +| Key-value store - writes | **$0.05** / 1,000 writes | +| Key-value store - lists | **$0.05** / 1,000 lists | +| Request queue - timed storage | **$4.00** / 1,000 GB-hours | +| Request queue - reads | **$0.004** / 1,000 reads | +| Request queue - writes | **$0.02** / 1,000 writes | + +Only revenue & cost for Apify customers on paid plans are taken into consideration when computing your profit. Users on free plans are not reflected there, although you can see statistics about the potential reeenue of users that are currently on free plans in Actor Insights in the Apify Console. :::note What are Gigabyte-hours? -Gigabyte-hours (GB-hours) are a unit of measurement used to quantify data storage and processing capacity over time. -To calculate GB-hours, multiply the amount of data in gigabytes by the number of hours it's stored or processed. +Gigabyte-hours (GB-hours) are a unit of measurement used to quantify data storage and processing capacity over time. To calculate GB-hours, multiply the amount of data in gigabytes by the number of hours it's stored or processed. -Suppose you host 50GB of data for 30 days. To calculate this in GB-hours: +For example, if you host 50GB of data for 30 days: - Convert days to hours: _30 * 24 = 720_ - Multiply data size by hours: _50 * 720 = 36,000_ This means that storing 50 GB of data for 30 days results in 36,000 GB-hours. - ::: -Note that only revenue and cost for Apify customers on [paid plans](https://apify.com/pricing) are taken into consideration when computing your profit. Users on free plans are not reflected there, although you can see statistics about the potential revenue of users that are currently on free plans in Actor insights in the Apify Console. +nread more about Actors in the STore and different pricing models from the perspective of your users in the [Store documentation](https://docs.apify.com/platform/actors/running/actors-in-store). -> **Example - pay-per-result pricing model** -> -> You make your Actor pay-per-result and set 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 $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`. +
+Example - pay-per-result pricing model -You can read more about Actors in the Store and different pricing models from the perspective of your users in our [Store documentation](https://docs.apify.com/platform/actors/running/actors-in-store). +You make your Actor pay-per-result and set 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 $0.5. -### Best practices for pay-per-result Actors +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`. +
-1. Set `minMemoryMbytes` and `maxMemoryMBytes` in [`actor.json`](https://docs.apify.com/platform/actors/development/actor-definition/actor-json) in your Actor folder. If users use more memory than you counted with in your price estimations, their runs will generate more underlying platform usage and will cost you more, which might affect your profit margin. +### Best practices for Pay-per-results Actors -2. Always check `ACTOR_MAX_PAID_DATASET_ITEMS` environment variable in your Actor code. Your Actor should never return more than `ACTOR_MAX_PAID_DATASET_ITEMS` results, because the user will be not charged for more and you could start generating losses. This variable is configurable by the user to limit how much the run will cost them. You can copy paste [this code](https://github.com/metalwarrior665/max-paid-items-example/blob/master/src/push-data.ts#L12) to your project to make pushing data aware of the max paid dataset items. +To ensure profitable operation: -3. To set your price per 1,000 results, we recommend running your Actor several times to see the average cost per 1,000 runs that is available in the Apify Console when you open run detail. Usually runs returning only 1 result are much more expensive in the underlying platform costs than runs returning many results, due to fixed costs at Actor startups. Hence, try runs with different numbers of results in your experiments to get the best idea about the average costs. Also make sure your runs never return 0 results, e.g. when scraping social network profiles without any videos, return at least the basic profile info. +- Set memory limits in your [`actor.json`](https://docs.apify.com/platform/actors/development/actor-definition/actor-json) file to control platform usage costs +- Implement the `ACTOR_MAX_PAID_DATASET_ITEMS` check to prevent excess result generation +- Test your Actor with various result volumes to determine optimal pricing ## Setting up monetization -First, go to your Actor page, [**Actors → My Actors**](https://console.apify.com/actors?tab=my) and click on the Actor you want to monetize. While on your Actor page, go to the **Publication** tab on the right side of the screen into and open the **Monetization** section. - +Navigate to your [Actor page](https://console.apify.com/actors?tab=my) in the Apify Console choose Actor that you want to monetize, and select the Publication tab. ![Monetization section](./images/monetization-section.png) - -If you haven't already, you will need to fill in the billing and payment details that will be used for paying out the profits. You can do that by following the link shown on the screen. Once you have the details set up, you will be able to access details on your payouts in the [**Settings > Payouts**](https://console.apify.com/account/payouts) section. - +Open the Monetization section and complete your billing and payment details. ![Set up monetization](./images/monetize_actor_set_up_monetization.png) - -Once you have your details set up, you can click the **Set up monetization** button that will lead you through a wizard where you will choose the monetization model and any respective fees. - +Follow the monetization wizard to configure. Follow the monetization wizard to configure your pricing model. ![Monetization wizard](./images/monetization_wizard.png) -## Changing monetization - -You can always change the monetization settings of your Actor. Note that any changes made to an already published Actor will always take 14 days to come into effect, to give users of your Actor, many of whom might be using it in their critical business flows, time to prepare for the change. To change the monetization, use the same wizard as for the setup, found in the Monetization section of the Actor Publication tab. - -Also, note that you are allowed to adjust the monetization settings of the Actor only once per month. Please refer to our [Terms & Conditions](https://apify.com/store-terms-and-conditions) for further details and guidelines. - -## How you will be paid out - -Payout invoices are created automatically on 14th of each month. You will be notified and can access the new payout invoice, and any historical invoices, in the [**Settings > Payouts**](https://console.apify.com/account/payouts) section in Apify Console. Once the new invoice is ready, you will need to review and approve it within a week in order for the payment to be processed. Note that if you do not approve the invoice, or let us know of any discrepancies, by the 20th of the month, the invoice will be auto-approved by the system on the 21st. If you have multiple Actors, the total profit is the sum of individual profits, and any losses and gains cancel out. - -## Tracking profit and user statistics +### Changing monetization -As mentioned earlier, you can track your Payouts in the [**Settings > Payouts**](https://console.apify.com/account/payouts) section in Apify Console. Apart from that, you can see statistics on your paid Actors in [**Actor > Analytics**](https://console.apify.com/actors?tab=earnings) tab. +You can change the monetization setting of your Actor by using the same wixard 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. -![Actor analytics](./images/actor_analytics.png) +:::important Frequency of monetization adjustments -To dive deep into numbers for a specific Actor, you can visit the specific Actor insights page in the **Actors > Analytics** section, next to the monetization settings. +Be aware that you can change monetization setting of each Actor only once per month. For further information & guidelines please refer to our [Terms & Conditions](https://apify.com/store-terms-and-conditions) -![Actor insights](./images/actor-insights.png) - -## Setting Actor prices {#setting-actor-prices} - -**You choose the price and, in the case of the rental model, a free trial length of your Actor.** Apify can give you advice about the best practices of the most successful Actors, but at the end of the day, we give developers full control over the pricing strategy of their tools. You can browse Apify Store to see how similar tools are priced to give you an idea about any potential competing solutions. - -## Promote your Actor - -Your paid Actors’ profits are directly related to the amount of paying users you have for your tool. After publishing and monetizing your software, comes a crucial step for your Actor’s success: **attracting users**. - -Getting new users can be an art in itself, but there are **two proven steps** you can take to ensure your Actor is getting the attention it deserves. - -1. **SEO-optimized description and README** - - Search engine optimization (SEO) is the process of improving the quality and quantity of traffic from search engines to your Actor’s page. - - In short, SEO-optimized texts improve the likelihood that potential customers will find your Actor when searching for similar tools on the web. - - This can be a daunting task to take on your own, so we prepared an in-depth [SEO guide](./seo_and_promotion.md) to help you **fine-tune your Actor’s title, description, and Readme.** - -2. **Promoting your Actor** - - Promoting your Actor on the right channels can be the deciding factor in successfully attracting users. - - While there are various ways to effectively promote your tool, it is usually best to share it on multiple channels. Here are a few suggestions of channels you can use to promote your Actor: - - - **Reddit and Quora** - - Find subreddits and Quora topics where the audience might be interested in the tool you developed, for example, the subreddit [r/webscraping](https://www.reddit.com/r/webscraping/). Here you can check an [example](https://www.quora.com/How-do-you-use-TikTok-to-market-your-business/answer/Theo-Vasilis?ch=10&oid=352266072&share=42bb7fae&srid=uFNdtn&target_type=answer) of how you can structure your posts on these social media to promote your Actor. - - - **Social Media (Twitter, Facebook, LinkedIn)** +::: - Don’t underestimate your own network! Your social media connections can be a valuable ally in promoting your Actor. Not only can they use your tool to enrich their own professional activities, but also support your work by helping you promote your Actor to their network. +## Payouts & analytics - For inspiration, you can check Apify’s [Twitter](https://twitter.com/apify) or [LinkedIn](https://www.linkedin.com/company/apifytech/) pages, and **don’t forget to tag Apify on your posts** we will retweet and share your posts to help you reach an even broader audience. +Payout invoices are generated automatically on the 14th of each month. Review your invoice in the Settings > Payout section within one week. If not approved by the 20th, the system will auto-approve on the 21st. - - **YouTube** +Track your Actor's performance through: - Videos are a powerful way to promote your Actors. Short tutorials showcasing your tool’s features and teaching users how to use them can be an effective way to boost your marketing efforts and provide value to your potential customers. +- The payout section for financial records +- Actor Analytics for usage statistics - For reference, you can check Apify’s [video tutorials](https://www.youtube.com/watch?v=uZ0LYBCjvd4&list=PLObrtcm1Kw6PmbXg8bmfJN-o2Hgx8sidf&index=1). + ![Actor analytics](./images/actor_analytics.png) - - **Publish an article about your Actor** +- Individual Actor Insights for detailed performance metrics - Writing an article about your Actor is a great way to attract public attention and gain users. + ![Actor insights](./images/actor-insights.png) - You can share your Actor's development journey with other developers, write a tutorial about how to effectively use the tool you created, or visit [Apify Blog](https://blog.apify.com/) for more ideas about how to promote your Actors. For inspiration, you can check this [How to Scrape Google Shopping](https://blog.apify.com/how-to-scrape-google-shopping/) tutorial on our blog. +## Promoting your Actor - Once your article is ready, you can check this list of relevant websites where you can publish your article: [hackernoon.com](https://hackernoon.com/), [techcrunch.com](https://techcrunch.com/), [news.ycombinator.com](https://news.ycombinator.com/), [dev.to](https://dev.to/), [producthunt.com,](https://www.producthunt.com/) [indiehackers.com](https://www.indiehackers.com/) +Create SEO-optimized descriptions and README files to improve search engine visibility. Share your Actor on multiple channels: -**Don’t overlook promoting your Actor**. This is arguably the most important step after publishing your tool. Taking advantage of all the possible channels for promotion is what often differentiates very successful Actors with dozens of paid users from Actors with few to no users at all. +- Post on Reddit, Quora, and social media platform +- Create tutorial videos demonstating key features +- Publish articles about your Actor on relevant websites +- Consider creating a product showcase on platforms like Product hunt -Finally, don’t forget to check our [pro-tips](./seo_and_promotion.md) to take your Actor promotion efforts to the next level. +Remember to tag Apify in your social media posts for additional exposure. Effective promotion can significantly impact your Actor's success, differentiating between those with many paid users and those with few to none. From 04526b01ac6400509f839f961d25738c02d30640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Tue, 10 Dec 2024 13:31:40 +0100 Subject: [PATCH 2/6] fix typo --- .../platform/get_most_of_actors/monetizing_your_actor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md index d116b1aab0..bc95aa88f6 100644 --- a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md +++ b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md @@ -127,7 +127,7 @@ Track your Actor's performance through: Create SEO-optimized descriptions and README files to improve search engine visibility. Share your Actor on multiple channels: - Post on Reddit, Quora, and social media platform -- Create tutorial videos demonstating key features +- Create tutorial videos demonstrating key features - Publish articles about your Actor on relevant websites - Consider creating a product showcase on platforms like Product hunt From 72e5dbcb32ed88849822a6eb9427de329ac8cee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:58:28 +0100 Subject: [PATCH 3/6] docs: rewrite SEO and promotion document new structure added details & summary tags for examples added admonitions rewrites for clarity & conciseness --- .../get_most_of_actors/seo_and_promotion.md | 132 ++++++++---------- 1 file changed, 58 insertions(+), 74 deletions(-) diff --git a/sources/academy/platform/get_most_of_actors/seo_and_promotion.md b/sources/academy/platform/get_most_of_actors/seo_and_promotion.md index b23fbcc023..1ae2b41cc9 100644 --- a/sources/academy/platform/get_most_of_actors/seo_and_promotion.md +++ b/sources/academy/platform/get_most_of_actors/seo_and_promotion.md @@ -5,121 +5,105 @@ sidebar_position: 4 slug: /get-most-of-actors/seo-and-promotion --- -# SEO and promotion - **Optimize your Actors to get more relevant visits from search engines like Google. Set search engine-friendly parameters and share your Actor with the world.** --- -Work on your Actors does not end when you publish it. Now, it's time to promote your creation and get it to its intended audience. The Apify domain will boost your position with search engines but it won't do all the work. Focus on crafting content according to topics and phrases people search for to give your Actor that extra boost. - -**The golden rule of SEO:** Create quality content that provides value and engagement to your users. [Don't over-optimize SEO](https://seo-hacker.com/over-optimization-penalty/) or you risk being penalized by Google. - -Think of it this way: your content, URLs, keywords, titles, links, etc. determine the kind of search queries your page is shown in. The quality of the content determines how high it ranks in those results. - -For example, if you over-optimize your URLs and title to rank higher in results for high-volume queries, but most people who visit your page immediately leave, Google notices, penalizes you, and your pages sink in the results. - -On the other hand, if you precisely address a niche segment of users who will benefit from your Actor and people who open it use your Actor, then Google will love it and push it up in results. Read more about the basics of [content marketing](https://techcrunch.com/2019/04/13/how-do-startups-actually-get-their-content-marketing-to-work/). - -## Keywords - -Several freemium tools exist that help with identifying the right phrases and keywords: - -- [wordstream.com/keywords](https://www.wordstream.com/keywords) -- [neilpatel.com/ubersuggest](https://neilpatel.com/ubersuggest/) -- [keywordtool.io](https://keywordtool.io/) +## Overview -Enter the desired phrase or topic (e.g. Facebook scraper, Web scraping, Facebook API...) and set the **language** to **English**. Ideally, set the **location** to **United States**. After submitting the form, you will see a list of relevant phrases for your query with information about **search** volume** (how many people are searching for this) and **competition** (number of results). +Work on your Actors does not end when you publish it. Now it's the time to promote your creation and get it to its intended audience. The Apify domain will boost your position with search engines but it won't do all the work. Focus on craftin content according to topics and phrases people search for to give your Actor that extra boost. -The best combinations are those with **high search volume** and **low competition**. Try to find keywords (or topics) relevant to your Actor based on these criteria. +### SEO fundamentals -**Use your selected keywords on all the important parts of your Actor's page/content**. +Create quality content that provides value and engagement to your users. Search engines evaluate not just keywords, but how users interact with your content. When your content precisely addresses a specific user needs and visitors actively engage, search engines will naturally boost your rankings. However, over-optimization can lead to penalties, especially if visitors quickjy leave your page. -- Page title. -- Meta description. -- Headings (1st and 2nd-level, ideally). -- Page body (e.g., README). -- The texts in your links. +### Keyword strategy -> While crafting your content with keywords, beware of [over-optimizing or keyword stuffing](https://yoast.com/over-optimized-website/) the page. You can use synonyms or related keywords to help this. Google is smart enough to evaluate the page based on how well the whole topic is covered (not only by keywords), but using them helps. +Start your keyword research using tools like: -## Optimizing your Actor details +- [Wordstream](https://www.wordstream.com/keywords) +- [Ubersuggest](https://neilpatel.com/ubersuggest/) +- [Keyword tool](https://keywordtool.io/) -While blog posts and promotion are important, your Actor is the main product. Here's how you can make it more SEO-friendly. +Target English language searches with a focus on US market. The ideal keywords combine high search volume with manageable competition levels. Incorporate these naturally throughout your content, particularly in titles, description, and body text. -### Name +:::warning Keyword stuffing -The Actor name is your Actor's developer-style name, which is prefixed by your username (e.g. `jancurn/find-broken-links`). The name is used to generate URL used for your Actor (e.g. https://apify.com/jancurn/find-broken-links), making it an important signal for search engines. The name should also be readable and clear enough, so that people using your Actor can understand what it does. +While crafting your content with keywords, beware of [over-optimizing or keyword stuffing](https://yoast.com/over-optimized-website/) the page. You can use synonyms or related keywords to help this. Google is smart enough to evaluate the page based on how well the whole topic is covered (not only by keywords), but using them helps. -[Read more about naming your Actor](./naming_your_actor.md)!. +::: -### Title +### Actor optimization -The Actor title provides a human-readable name. The title is the most important real estate from an SEO standpoint. It should exactly match the most likely search query that potential users of your Actor will use. +While blog posts and promotion are important, your Actor is the main product -At the same time, it should give your Actor a clear name for people who will use it every day. If you’re working on an "Amazon crawler" or a "Google Places API", use the following formats for your Actor's name: +#### Name -> **GOOD**: Crawler for Amazon, API for Google Places, Search in Kickstarter. ->
**BETTER**: Amazon crawler, Google Places API, Kickstarter search. +Your Actor's name should be developer-friendly and clearly indicate functionality, such as `username/descriptive-function-name`. -### Description +#### Title -Your Actor's description should contain a concise but accurate description of what your Actor does, targeted at people who are deciding whether to use it or not. Get straight to the point and avoid any boilerplate text. +The title is the most important real estate from an SEO standpoint. +You should aim to create titles that balance searchability with clarity. -> **GOOD**: Crawls Amazon.com and extracts ...
**AVOID**: This Actor crawls Amazon.com in order to extract ... +
+ Actor title - examples -The description is used by search engines to understand what the Actor is about, so it should contain some of the most popular variations and derivations of the [title](#title), including things people might search for. +**GOOD**: Crawler for Amazon, API for Google Places, Search in Kickstarter. +
**BETTER**: Amazon crawler, Google Places API, Kickstarter search. -> **GOOD**: This Amazon bot will help, whereas the Amazon API won’t. Use the crawler... ->
**AVOID**: This crawler will search through results in Amazon and offers you... +
-If you’re not sure about similar phrases, check out the Google suggest tool in the search, and it will show you some hints and tips. Of course, the description should primarily be about what the Actor does, but it’s always a good idea to enrich the text with popular keywords. +#### Description -![Google suggestions example](./images/actors-publishing-google.png) +The description is used by search engines to understand what the Actor is about. +You should aim to write descriptions that immediately communicate your Actor's purpose without unnecessary introductory phrases. -### README +
+ Actor description - examples -The README․md file represents a complete description of your Actor, intended for its users. If your Actor's users are technical folks, you can be technical in the README. If they aren't, keep it simple. [See our article on writing great READMEs](https://help.apify.com/en/articles/2912548-how-to-write-great-readme-for-your-actors). +**GOOD**: Crawls Amazon.com and extracts ...
+**AVOID**: This Actor crawls Amazon.com in order to extract ... +**GOOD**: This Amazon bot will help, whereas the Amazon API won’t. Use the crawler...
+**AVOID**: This crawler will search through results in Amazon and offers you... +
-You have lots of room for SEO optimization in the README, without compromising readability for your users. Make sure the text includes other variants of what potential users of your Actor might search for. A good place for these is in the captions and headlines but keywords in the body text will also help. It’s also a good idea to repeat the name of the Actor several times. +#### README -> **GOOD**: You can use this Amazon Crawler with your code (Python, PHP, Java) to crawl Amazon without the API... ->
**AVOID**: Follow the instructions in the Readme and if you have any comments, see the FAQ section... +Your readme file should serve as a comprehensive guide matching your audience's technical expertise. Include relevant keywords naturally within the content, and incorporate meaningful internal and external links. When refernecing external resources, ensure the links provide value while supporting your SEO strategy. -An important part of SEO is internal and external linking. Don’t be shy - add links to your README leading to similar [Actors](https://apify.com/store) or any interesting article in [Apify Help](https://help.apify.com/) that could assist your users. If your Actor is scraping a certain website, make sure to add a link to that website. If the Actor uses any external libraries, make sure to link their pages. +
+ Actor README - examples -If you’ve created other Actors, it’s completely fine to pop in a promo for them at the end. It’s even better if you edit your old Actors and put in a link to your new Actor. We’ll take care of extra promotion on the [Apify homepage](https://apify.com/) or [Apify Store](https://apify.com/store) - especially if you’ve done a great job of describing your Actors! +**GOOD**: You can use this Amazon Crawler with your code (Python, PHP, Java) to crawl Amazon without the API...
+**AVOID**: Follow the instructions in the Readme and if you have any comments, see the FAQ section...
-> **GOOD**: Like my Amazon Crawler? See my Amazon Review Crawler. ->
**AVOID**: Check out my Amazon Crawler. -## Promotion +**GOOD**: Like my Amazon Crawler? See my Amazon Review Crawler.
+**AVOID**: Check out my Amazon Crawler. -Now that you’ve created a cool new Actor, let others see it! Share it on your personal Twitter, Facebook, Reddit or any other social platform. Always provide a link with the Actor's name. Use #hashtags on Twitter to catch attention. Provide a small “why is this good” segment when sharing inside any group discussions. We will promote your Actor sooner or later, but more links mean more attention from Google from the beginning. +
-### External promotion +### Promotion strategy -- Try to publish an article about your Actor in relevant external magazines like [hackernoon.com](https://hackernoon.com/) or [techcrunch.com](https://techcrunch.com/). Do not limit yourself to blogging platforms. -- If you publish an article in external media (magazine, blog etc.), be sure to include backlinks to your Actor and the Apify website to strengthen the domain's SEO. -- It's always better to use backlinks with the [`dofollow` attribute](https://raventools.com/marketing-glossary/dofollow-link/). -- Always use the most relevant URL as the backlink's landing page. For example, when talking about Apify Store, link to the Store page ([apify.com/store](https://apify.com/store)), not to Apify homepage ([apify.com](https://apify.com)). -- Always use the most relevant keyword or phrase for the backlink's text. This can boost the landing page's SEO and help the readers know what to expect from the link. +Share your Actor through multiple channels while maintaining authenticity. -> **GOOD**: Try the [Facebook scraper](https://apify.com/apify/facebook-pages-scraper) now. ->
**AVOID**: Try the Facebook scraper [here](https://apify.com/apify/facebook-pages-scraper). +#### External promotion -### Social media and forums +- Publish articles on platforms like [hackernoon.com](https://hackernoon.com/) or [techcrunch.com](https://techcrunch.com/). +- Include backlinks with [`dofollow`](https://raventools.com/marketing-glossary/dofollow-link/) attribute. +- Use relevant landing page URL + - For example when talking about Apify Store, link to the [Store page](https://apify.com/store), not the [Apify homepage](https://apify.com/) +- Create descriptive anchor text -- Use relevant and widely used hashtags (Twitter). +#### Social media promotion -> **GOOD**: Need to crawl #Amazon or #Yelp? See my Amazon crawler `https://`... ->
**AVOID**: I just #created something, check it out on Apify... +- Use meaningful hashtags on Twitter +- Engage in relevant group discussions +- Participate in technical communities authentically +- Focus on solving problems while naturally introducing your Actor -- Post in groups or pages with relevant target groups (Facebook and LinkedIn). -- Always use the most relevant URL as the backlink's landing page. -- Use other relevant websites for promotion. For example, [news.ycombinator.com](https://news.ycombinator.com/), [producthunt.com](https://www.producthunt.com/), [indiehackers.com](https://www.indiehackers.com/), and [dev.to](https://dev.to/) -- While promoting the Actor on forums like Reddit or Quora, try not to post strictly promotional answers. If you help someone with their problem, all readers will be more willing to upvote your posts or check the Actor. -- If it's possible to upvote your posts, do it and get others to help you. +Remember to maintain a helpful presence in communities, solving problems while appropriately refencing your Actor as a solution when relevant. ## Next up {#next} From a11b18b122b06e52ddc83720f7de8069adb5cd31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Tue, 10 Dec 2024 15:59:39 +0100 Subject: [PATCH 4/6] Revert "docs: rewrite SEO and promotion document" This reverts commit 72e5dbcb32ed88849822a6eb9427de329ac8cee8. --- .../get_most_of_actors/seo_and_promotion.md | 132 ++++++++++-------- 1 file changed, 74 insertions(+), 58 deletions(-) diff --git a/sources/academy/platform/get_most_of_actors/seo_and_promotion.md b/sources/academy/platform/get_most_of_actors/seo_and_promotion.md index 1ae2b41cc9..b23fbcc023 100644 --- a/sources/academy/platform/get_most_of_actors/seo_and_promotion.md +++ b/sources/academy/platform/get_most_of_actors/seo_and_promotion.md @@ -5,105 +5,121 @@ sidebar_position: 4 slug: /get-most-of-actors/seo-and-promotion --- +# SEO and promotion + **Optimize your Actors to get more relevant visits from search engines like Google. Set search engine-friendly parameters and share your Actor with the world.** --- -## Overview +Work on your Actors does not end when you publish it. Now, it's time to promote your creation and get it to its intended audience. The Apify domain will boost your position with search engines but it won't do all the work. Focus on crafting content according to topics and phrases people search for to give your Actor that extra boost. + +**The golden rule of SEO:** Create quality content that provides value and engagement to your users. [Don't over-optimize SEO](https://seo-hacker.com/over-optimization-penalty/) or you risk being penalized by Google. + +Think of it this way: your content, URLs, keywords, titles, links, etc. determine the kind of search queries your page is shown in. The quality of the content determines how high it ranks in those results. + +For example, if you over-optimize your URLs and title to rank higher in results for high-volume queries, but most people who visit your page immediately leave, Google notices, penalizes you, and your pages sink in the results. + +On the other hand, if you precisely address a niche segment of users who will benefit from your Actor and people who open it use your Actor, then Google will love it and push it up in results. Read more about the basics of [content marketing](https://techcrunch.com/2019/04/13/how-do-startups-actually-get-their-content-marketing-to-work/). + +## Keywords + +Several freemium tools exist that help with identifying the right phrases and keywords: + +- [wordstream.com/keywords](https://www.wordstream.com/keywords) +- [neilpatel.com/ubersuggest](https://neilpatel.com/ubersuggest/) +- [keywordtool.io](https://keywordtool.io/) -Work on your Actors does not end when you publish it. Now it's the time to promote your creation and get it to its intended audience. The Apify domain will boost your position with search engines but it won't do all the work. Focus on craftin content according to topics and phrases people search for to give your Actor that extra boost. +Enter the desired phrase or topic (e.g. Facebook scraper, Web scraping, Facebook API...) and set the **language** to **English**. Ideally, set the **location** to **United States**. After submitting the form, you will see a list of relevant phrases for your query with information about **search** volume** (how many people are searching for this) and **competition** (number of results). -### SEO fundamentals +The best combinations are those with **high search volume** and **low competition**. Try to find keywords (or topics) relevant to your Actor based on these criteria. -Create quality content that provides value and engagement to your users. Search engines evaluate not just keywords, but how users interact with your content. When your content precisely addresses a specific user needs and visitors actively engage, search engines will naturally boost your rankings. However, over-optimization can lead to penalties, especially if visitors quickjy leave your page. +**Use your selected keywords on all the important parts of your Actor's page/content**. -### Keyword strategy +- Page title. +- Meta description. +- Headings (1st and 2nd-level, ideally). +- Page body (e.g., README). +- The texts in your links. -Start your keyword research using tools like: +> While crafting your content with keywords, beware of [over-optimizing or keyword stuffing](https://yoast.com/over-optimized-website/) the page. You can use synonyms or related keywords to help this. Google is smart enough to evaluate the page based on how well the whole topic is covered (not only by keywords), but using them helps. -- [Wordstream](https://www.wordstream.com/keywords) -- [Ubersuggest](https://neilpatel.com/ubersuggest/) -- [Keyword tool](https://keywordtool.io/) +## Optimizing your Actor details -Target English language searches with a focus on US market. The ideal keywords combine high search volume with manageable competition levels. Incorporate these naturally throughout your content, particularly in titles, description, and body text. +While blog posts and promotion are important, your Actor is the main product. Here's how you can make it more SEO-friendly. -:::warning Keyword stuffing +### Name -While crafting your content with keywords, beware of [over-optimizing or keyword stuffing](https://yoast.com/over-optimized-website/) the page. You can use synonyms or related keywords to help this. Google is smart enough to evaluate the page based on how well the whole topic is covered (not only by keywords), but using them helps. +The Actor name is your Actor's developer-style name, which is prefixed by your username (e.g. `jancurn/find-broken-links`). The name is used to generate URL used for your Actor (e.g. https://apify.com/jancurn/find-broken-links), making it an important signal for search engines. The name should also be readable and clear enough, so that people using your Actor can understand what it does. -::: +[Read more about naming your Actor](./naming_your_actor.md)!. -### Actor optimization +### Title -While blog posts and promotion are important, your Actor is the main product +The Actor title provides a human-readable name. The title is the most important real estate from an SEO standpoint. It should exactly match the most likely search query that potential users of your Actor will use. -#### Name +At the same time, it should give your Actor a clear name for people who will use it every day. If you’re working on an "Amazon crawler" or a "Google Places API", use the following formats for your Actor's name: -Your Actor's name should be developer-friendly and clearly indicate functionality, such as `username/descriptive-function-name`. +> **GOOD**: Crawler for Amazon, API for Google Places, Search in Kickstarter. +>
**BETTER**: Amazon crawler, Google Places API, Kickstarter search. -#### Title +### Description -The title is the most important real estate from an SEO standpoint. -You should aim to create titles that balance searchability with clarity. +Your Actor's description should contain a concise but accurate description of what your Actor does, targeted at people who are deciding whether to use it or not. Get straight to the point and avoid any boilerplate text. -
- Actor title - examples +> **GOOD**: Crawls Amazon.com and extracts ...
**AVOID**: This Actor crawls Amazon.com in order to extract ... -**GOOD**: Crawler for Amazon, API for Google Places, Search in Kickstarter. -
**BETTER**: Amazon crawler, Google Places API, Kickstarter search. +The description is used by search engines to understand what the Actor is about, so it should contain some of the most popular variations and derivations of the [title](#title), including things people might search for. -
+> **GOOD**: This Amazon bot will help, whereas the Amazon API won’t. Use the crawler... +>
**AVOID**: This crawler will search through results in Amazon and offers you... -#### Description +If you’re not sure about similar phrases, check out the Google suggest tool in the search, and it will show you some hints and tips. Of course, the description should primarily be about what the Actor does, but it’s always a good idea to enrich the text with popular keywords. -The description is used by search engines to understand what the Actor is about. -You should aim to write descriptions that immediately communicate your Actor's purpose without unnecessary introductory phrases. +![Google suggestions example](./images/actors-publishing-google.png) -
- Actor description - examples +### README -**GOOD**: Crawls Amazon.com and extracts ...
-**AVOID**: This Actor crawls Amazon.com in order to extract ... -**GOOD**: This Amazon bot will help, whereas the Amazon API won’t. Use the crawler...
-**AVOID**: This crawler will search through results in Amazon and offers you... -
+The README․md file represents a complete description of your Actor, intended for its users. If your Actor's users are technical folks, you can be technical in the README. If they aren't, keep it simple. [See our article on writing great READMEs](https://help.apify.com/en/articles/2912548-how-to-write-great-readme-for-your-actors). -#### README +You have lots of room for SEO optimization in the README, without compromising readability for your users. Make sure the text includes other variants of what potential users of your Actor might search for. A good place for these is in the captions and headlines but keywords in the body text will also help. It’s also a good idea to repeat the name of the Actor several times. -Your readme file should serve as a comprehensive guide matching your audience's technical expertise. Include relevant keywords naturally within the content, and incorporate meaningful internal and external links. When refernecing external resources, ensure the links provide value while supporting your SEO strategy. +> **GOOD**: You can use this Amazon Crawler with your code (Python, PHP, Java) to crawl Amazon without the API... +>
**AVOID**: Follow the instructions in the Readme and if you have any comments, see the FAQ section... -
- Actor README - examples +An important part of SEO is internal and external linking. Don’t be shy - add links to your README leading to similar [Actors](https://apify.com/store) or any interesting article in [Apify Help](https://help.apify.com/) that could assist your users. If your Actor is scraping a certain website, make sure to add a link to that website. If the Actor uses any external libraries, make sure to link their pages. -**GOOD**: You can use this Amazon Crawler with your code (Python, PHP, Java) to crawl Amazon without the API...
-**AVOID**: Follow the instructions in the Readme and if you have any comments, see the FAQ section...
+If you’ve created other Actors, it’s completely fine to pop in a promo for them at the end. It’s even better if you edit your old Actors and put in a link to your new Actor. We’ll take care of extra promotion on the [Apify homepage](https://apify.com/) or [Apify Store](https://apify.com/store) - especially if you’ve done a great job of describing your Actors! +> **GOOD**: Like my Amazon Crawler? See my Amazon Review Crawler. +>
**AVOID**: Check out my Amazon Crawler. -**GOOD**: Like my Amazon Crawler? See my Amazon Review Crawler.
-**AVOID**: Check out my Amazon Crawler. +## Promotion -
+Now that you’ve created a cool new Actor, let others see it! Share it on your personal Twitter, Facebook, Reddit or any other social platform. Always provide a link with the Actor's name. Use #hashtags on Twitter to catch attention. Provide a small “why is this good” segment when sharing inside any group discussions. We will promote your Actor sooner or later, but more links mean more attention from Google from the beginning. -### Promotion strategy +### External promotion -Share your Actor through multiple channels while maintaining authenticity. +- Try to publish an article about your Actor in relevant external magazines like [hackernoon.com](https://hackernoon.com/) or [techcrunch.com](https://techcrunch.com/). Do not limit yourself to blogging platforms. +- If you publish an article in external media (magazine, blog etc.), be sure to include backlinks to your Actor and the Apify website to strengthen the domain's SEO. +- It's always better to use backlinks with the [`dofollow` attribute](https://raventools.com/marketing-glossary/dofollow-link/). +- Always use the most relevant URL as the backlink's landing page. For example, when talking about Apify Store, link to the Store page ([apify.com/store](https://apify.com/store)), not to Apify homepage ([apify.com](https://apify.com)). +- Always use the most relevant keyword or phrase for the backlink's text. This can boost the landing page's SEO and help the readers know what to expect from the link. -#### External promotion +> **GOOD**: Try the [Facebook scraper](https://apify.com/apify/facebook-pages-scraper) now. +>
**AVOID**: Try the Facebook scraper [here](https://apify.com/apify/facebook-pages-scraper). -- Publish articles on platforms like [hackernoon.com](https://hackernoon.com/) or [techcrunch.com](https://techcrunch.com/). -- Include backlinks with [`dofollow`](https://raventools.com/marketing-glossary/dofollow-link/) attribute. -- Use relevant landing page URL - - For example when talking about Apify Store, link to the [Store page](https://apify.com/store), not the [Apify homepage](https://apify.com/) -- Create descriptive anchor text +### Social media and forums -#### Social media promotion +- Use relevant and widely used hashtags (Twitter). -- Use meaningful hashtags on Twitter -- Engage in relevant group discussions -- Participate in technical communities authentically -- Focus on solving problems while naturally introducing your Actor +> **GOOD**: Need to crawl #Amazon or #Yelp? See my Amazon crawler `https://`... +>
**AVOID**: I just #created something, check it out on Apify... -Remember to maintain a helpful presence in communities, solving problems while appropriately refencing your Actor as a solution when relevant. +- Post in groups or pages with relevant target groups (Facebook and LinkedIn). +- Always use the most relevant URL as the backlink's landing page. +- Use other relevant websites for promotion. For example, [news.ycombinator.com](https://news.ycombinator.com/), [producthunt.com](https://www.producthunt.com/), [indiehackers.com](https://www.indiehackers.com/), and [dev.to](https://dev.to/) +- While promoting the Actor on forums like Reddit or Quora, try not to post strictly promotional answers. If you help someone with their problem, all readers will be more willing to upvote your posts or check the Actor. +- If it's possible to upvote your posts, do it and get others to help you. ## Next up {#next} From faf276aa2bcc87e08648bf126eebefe8a0092f4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:43:49 +0100 Subject: [PATCH 5/6] make table more readable in the source --- .../monetizing_your_actor.md | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md index bc95aa88f6..9b7185ef01 100644 --- a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md +++ b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md @@ -38,23 +38,24 @@ In this model, you set a price per 1000 results. Users are charged based on the ### Pay-per-result unit pricing for cost computation -| Service | Unit price | -|:---|:---| -| Compute unit | **$0.4** / CU | -| Residential proxies | **$13** / GB | -| SERPs proxy | **$3** / 1,000 SERPs | -| Data transfer - external | **$0.20** / GB | -| Data transfer - internal | **$0.05** / GB | -| Dataset - timed storage | **$1.00** / 1,000 GB-hours | -| Dataset - reads | **$0.0004** / 1,000 reads | -| Dataset - writes | **$0.005** / 1,000 writes | +| Service | Unit price | +|:--------------------------------|:---------------------------| +| Compute unit | **$0.4** / CU | +| Residential proxies | **$13** / GB | +| SERPs proxy | **$3** / 1,000 SERPs | +| Data transfer - external | **$0.20** / GB | +| Data transfer - internal | **$0.05** / GB | +| Dataset - timed storage | **$1.00** / 1,000 GB-hours | +| Dataset - reads | **$0.0004** / 1,000 reads | +| Dataset - writes | **$0.005** / 1,000 writes | | Key-value store - timed storage | **$1.00** / 1,000 GB-hours | -| Key-value store - reads | **$0.005** / 1,000 reads | -| Key-value store - writes | **$0.05** / 1,000 writes | -| Key-value store - lists | **$0.05** / 1,000 lists | -| Request queue - timed storage | **$4.00** / 1,000 GB-hours | -| Request queue - reads | **$0.004** / 1,000 reads | -| Request queue - writes | **$0.02** / 1,000 writes | +| Key-value store - reads | **$0.005** / 1,000 reads | +| Key-value store - writes | **$0.05** / 1,000 writes | +| Key-value store - lists | **$0.05** / 1,000 lists | +| Request queue - timed storage | **$4.00** / 1,000 GB-hours | +| Request queue - reads | **$0.004** / 1,000 reads | +| Request queue - writes | **$0.02** / 1,000 writes | + Only revenue & cost for Apify customers on paid plans are taken into consideration when computing your profit. Users on free plans are not reflected there, although you can see statistics about the potential reeenue of users that are currently on free plans in Actor Insights in the Apify Console. From f4354de999a82d8280170d2f86dd89fd1d89fc21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:59:39 +0100 Subject: [PATCH 6/6] change formatting for inline calculations --- .../platform/get_most_of_actors/monetizing_your_actor.md | 4 ++-- vale.ini | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md index 9b7185ef01..dd77f3d601 100644 --- a/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md +++ b/sources/academy/platform/get_most_of_actors/monetizing_your_actor.md @@ -27,7 +27,7 @@ You make your Actor rental with 7 days free trial and then $30/month. During the 2. Second user, on Apify paid plan, starts the free trial on 25th 3. Third user, on Apify free plan, start the free trial on 20th -The first user pays their first rent 7 days after the free trial, i.e., on 22nd. The second user only starts paying the rent next month. The third user is on Apify free plan, so after the free trial ends on 27th, 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`. +The first user pays their first rent 7 days after the free trial, i.e., on 22nd. The second user only starts paying the rent next month. The third user is on Apify free plan, so after the free trial ends on 27th, 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_. ## Pay-per-result pricing model @@ -78,7 +78,7 @@ nread more about Actors in the STore and different pricing models from the persp You make your Actor pay-per-result and set 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 $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`. +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_. ### Best practices for Pay-per-results Actors diff --git a/vale.ini b/vale.ini index 2f2642641b..3b8beef84a 100644 --- a/vale.ini +++ b/vale.ini @@ -21,3 +21,4 @@ Microsoft.ThereIs = NO Microsoft.Auto = NO Microsoft.URLFormat = NO Microsoft.GeneralURL = NO +Microsoft.RangeFormat = NO