Skip to content
Open
Show file tree
Hide file tree
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
2 changes: 2 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
"no-multiple-blanks": {
"maximum": 2
},
"table-column-style": false,
"ul-indent": false,
"no-space-in-emphasis": false,
"link-fragments": false,
"no-duplicate-heading": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ Any repetitive job matching the following criteria might be suitable for turning

If you look closely, you'll start seeing opportunities for new Actors everywhere. Be creative!


## Use the Actor ideas page

The [Actor ideas](https://apify.com/ideas) page is where you can find inspiration for new Actors sourced from the Apify community.
Expand All @@ -166,28 +165,23 @@ Build and publish new tools on Apify and have multiple chances to win big prizes
:::

1. _Visit_ [apify.com/ideas](https://apify.com/ideas) to find ideas that interest you. Look for ideas that align with your skills.
2. _Select an Actor idea_: Review the details and requirements. Check the status—if it's marked **Open to develop**, you can start building.
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd rather keep only 1. as ordered lists. It makes for much easier maitenance

Copy link
Member Author

Choose a reason for hiding this comment

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

to me, having only 1. everywhere is a hack, not a proper solution. it produces warnings in webstorm, and i am actually surprised it doesnt trigger linter errors.

this is a job for IDE, you shouldn't do that by hand. not sure if vscode doesnt have a helper, webstorm does.

image

Copy link
Contributor

Choose a reason for hiding this comment

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

It's not a hack, this is based on CommonMark spec which Docusaurus supports. Either way in VSC/Cursor this is handled by extension, I was curious that here I saw it changed to regular numbering but not in other cases

3. _Build your Actor_: Develop your Actor based on the idea. You don't need to notify Apify during development.
4. _Prepare for launch_: Ensure your Actor meets quality standards and has a comprehensive README with installation instructions, usage details, and examples.
5. _Publish your Actor_: Deploy your Actor on Apify Store and make it live.
6. _Monitor and optimize_: Track your Actor's performance and user feedback. Make improvements to keep your Actor current.

1. _Select an Actor idea_: Review the details and requirements. Check the status—if it's marked **Open to develop**, you can start building.

1. _Build your Actor_: Develop your Actor based on the idea. You don't need to notify Apify during development.

1. _Prepare for launch_: Ensure your Actor meets quality standards and has a comprehensive README with installation instructions, usage details, and examples.

1. _Publish your Actor_: Deploy your Actor on Apify Store and make it live.

<!-- 1. _Claim the idea_: After publishing, email [ideas@apify.com](mailto:ideas@apify.com) with your Actor URL and the original idea. Apify will tag the idea as **Completed** and link it to your Actor.

1. To claim an idea, ensure your Actor is functional, README contains relevant information, and your Actor closely aligns with the original idea. -->

1. _Monitor and optimize_: Track your Actor's performance and user feedback. Make improvements to keep your Actor current.
<!--
1. _Claim the idea_: After publishing, email [ideas@apify.com](mailto:ideas@apify.com) with your Actor URL and the original idea. Apify will tag the idea as **Completed** and link it to your Actor.
1. To claim an idea, ensure your Actor is functional, README contains relevant information, and your Actor closely aligns with the original idea.
-->

<!-- #### Multiple developers for one idea

Apify Store can host multiple Actors with similar functions. However, the "first come, first served" rule applies—the first developer to claim an idea receives the **Completed** tag and a link from the Actor ideas page.

Competition motivates developers to improve the code. You can still build the Actor, but differentiate with a unique set of features. -->


<!-- ### Submit your own ideas

The Ideas page is also where you contribute concepts to drive innovation in the community.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ You can change descriptions and names as many times as you want.

## Regular description vs. SEO description

| | Actor description & name | SEO description & name |
|---|---|---|
| Name length | 40-50 characters | 40-50 characters |
| Description length | 300 characters | 145-155 characters |
| Visibility | Visible on Store | Visible on Google |
| | Actor description & name | SEO description & name |
| ------------------ | ------------------------ | ---------------------- |
| Name length | 40-50 characters | 40-50 characters |
| Description length | 300 characters | 145-155 characters |
| Visibility | Visible on Store | Visible on Google |

### Description & Actor name

Expand Down Expand Up @@ -58,7 +58,7 @@ Learn more about search intent here: [SEO](/academy/actor-marketing-playbook/pro

## Where can Actor descriptions be set?

Both descriptions can be found and edited on the very right **Publication tab → Display information.** It has to be done separately for each Actor.
Both descriptions can be found and edited on the very right **Publication tab → Display information.** It has to be done separately for each Actor.

:::note

Expand All @@ -81,33 +81,31 @@ When writing a description, less is more. You only have a few seconds to capture
### Use variations and experiment 🔄

- _SEO name vs. regular name_:
- name: Airbnb Scraper
- SEO name: Airbnb Data Scraper
- name: Airbnb Scraper
- SEO name: Airbnb Data Scraper
- _Keywords on the web page_:<br/>
Include variations, e.g. Airbnb API, Airbnb data, Airbnb data scraper, Airbnb rentals, Airbnb listings
- No-code scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- Scrape Airbnb listings without official Airbnb API!
Include variations, e.g. Airbnb API, Airbnb data, Airbnb data scraper, Airbnb rentals, Airbnb listings
- No-code scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- Scrape Airbnb listings without official Airbnb API!
- _Scraping/automation process variations_:<br/>
Use terms, e.g. crawl, crawler, scraping tool, finder, scraper, data extraction tool, extract data, get data
- Scrape XYZ data, scraped data, data scraper, data crawler.
Use terms, e.g. crawl, crawler, scraping tool, finder, scraper, data extraction tool, extract data, get data
- Scrape XYZ data, scraped data, data scraper, data crawler.

### Choose how to start your sentences 📝

- _Noun-first (descriptive)_:
- Data extraction tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- Data extraction tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- _Imperative-first (motivating)_:
- Try a free web scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.

- Try a free web scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.

### Keep it short and SEO-focused ✂️

- _Be concise and direct_: clearly state what your Actor does. Avoid unnecessary fluff and boilerplate text.
- ✅ Scrapes job listings from Indeed and gathers...
- ❌ *This Actor scrapes job listings from Indeed in order to gather...
- ✅ Scrapes job listings from Indeed and gathers...
- ❌ \*This Actor scrapes job listings from Indeed in order to gather...
- _Optimize for search engines_: include popular keywords related to your Actor’s functionality that users might search for.
- ✅ This Indeed scraper helps you collect job data efficiently. Use the tool to gather...
- ❌ This tool will search through job listings on Indeed and offers you...

- ✅ This Indeed scraper helps you collect job data efficiently. Use the tool to gather...
- ❌ This tool will search through job listings on Indeed and offers you...

### List the data your Actor works with 📝

Expand All @@ -123,17 +121,17 @@ Use terms, e.g. crawl, crawler, scraping tool, finder, scraper, data extraction
### Highlight your strong suits 🌟

- Ease of use, no coding, user-friendly:
- Easy scraping tool to extract Airbnb data.
- Easy scraping tool to extract Airbnb data.
- Fast and scalable:
- Scrape whole cities or extract data from hundreds of Airbnb rentals in seconds.
- Scrape whole cities or extract data from hundreds of Airbnb rentals in seconds.
- Free (only if the trial run can cover $5 free credits):
- Try a free scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- Extract host information, locations, availability, stars, reviews, images, and host/guest details for free.
- Try a free scraping tool to extract Airbnb data: host info, prices, dates, location, and reviews.
- Extract host information, locations, availability, stars, reviews, images, and host/guest details for free.
- Available platform features (various formats, API, integrations, scheduling):
- Export scraped data in formats like HTML, JSON, and Excel.
- Export scraped data in formats like HTML, JSON, and Excel.
- Additional tips:
- Avoid ending lists with etc.
- Consider adding relevant emojis for visual appeal.
- Avoid ending lists with etc.
- Consider adding relevant emojis for visual appeal.

### Break it down 🔠

Expand All @@ -146,7 +144,9 @@ Examples:
1. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

## FAQ

<!-- markdownlint-disable MD001 -->

#### Can the Actor's meta description and description be the same?

Yes, they can, as long as they have the same (shorter) length (under 150 characters). But they can also be different - there's no harm in that.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,26 +28,26 @@ Monetizing your Actor on the Apify platform involves several key steps:
![pay per event model example](images/ppe-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`
- _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`
- `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 with 10GB of memory = $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 with 5GB of memory = $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
- User A:
- Started the Actor with 10GB of memory = $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 with 5GB of memory = $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 Pay-per-event details

Expand All @@ -62,11 +62,11 @@ If you want more details about PPE pricing, refer to our [PPE documentation](/pl
- _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
- 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
Expand All @@ -81,9 +81,9 @@ If you want more details about PPR pricing, refer to our [PPR documentation](/pl

- _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.
- 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 Rental pricing details

Expand Down Expand Up @@ -160,7 +160,7 @@ 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]

:::

Expand All @@ -172,4 +172,3 @@ Example of useful pricing estimates from the **Analytics** tab:
- 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

Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ If you want to add snippets of code anywhere in your README, you can use [Carbo

If you need quick Markdown guidance, check out [https://www.markdownguide.org/cheat-sheet/](https://www.markdownguide.org/cheat-sheet/)


## README and SEO

Your README is your landing page.
Expand Down Expand Up @@ -231,8 +230,8 @@ Learn about [How to create a great input schema](/academy/actor-marketing-playbo
- Business use cases
- Link to a success story, a business use case, or a blog post.
3. How to scrape (target site)
- Link to "How to…" blogs, if one exists (or suggest one if it doesn't)
- Add a video tutorial or gif from an ideal Actor run.
- Link to "How to…" blogs, if one exists (or suggest one if it doesn't)
- Add a video tutorial or gif from an ideal Actor run.

:::tip Embedding YouTube videos

Expand All @@ -246,13 +245,13 @@ For better user experience, Apify Console automatically renders every YouTube UR
- This can be used as a boilerplate text for the legal section, but you should use your own judgment and also customize it with the site name.

> Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can also read our blog post on the legality of web scraping
>

2. Input
- Each Actor detail page has an input tab, so you just need to refer to that. If you like, you can add a screenshot showing the user what the input fields will look like.
- This is an example of how to refer to the input tab:

> Twitter Scraper has the following input options. Click on the input tab for more information.
>

3. Output
- Mention "You can download the dataset extracted by (Actor name) in various formats such as JSON, HTML, CSV, or Excel.”
- Add a simplified JSON dataset example, like here https://apify.com/compass/crawler-google-places#output-example
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,10 @@ In Console. Open the **Actor's page**, then click on **…** in the top right co

![set the actor url](images/how-and-where-to-set-the-actor-url.png)


## FAQ

<!-- markdownlint-disable MD001 -->

#### Can Actor URL be different from Actor name?

Yes. While they can be the same, they don’t have to be. For the best user experience, keeping them identical is recommended, but you can experiment with the Actor's name. Just avoid changing the Actor URL.
Expand All @@ -106,4 +107,3 @@ Yes, you can. But it will most likely lower your chances of being noticed by Goo
#### Does changing my Apify account name affect the Actor URL?

Yes. If you're changing from _justanotherdev/pentagon-scraper_ to _dev/pentagon-scraper_, it counts as a new page. Essentially, the consequences are the same as after changing the technical name of the Actor.

Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ Ideally, you should choose a name that clearly shows what your Actor does and in
Your Actor's name consists of four parts: actual name, SEO name, URL, and GitHub repository name.

- Actor name (name shown in Apify Store), e.g. _Booking Scraper_.
- Actor SEO name (name shown on Google Search, optional), e.g. _Booking.com Hotel Data Scraper_.
- If the SEO name is not set, the Actor name will be the default name shown on Google.
- Actor SEO name (name shown on Google Search, optional), e.g. _Booking.com Hotel Data Scraper_.
- If the SEO name is not set, the Actor name will be the default name shown on Google.
- Actor URL (technical name), e.g. _booking-scraper_.
- More on it on [Importance of Actor URL](/academy/actor-marketing-playbook/actor-basics/importance-of-actor-url) page.
- More on it on [Importance of Actor URL](/academy/actor-marketing-playbook/actor-basics/importance-of-actor-url) page.
- GitHub repository name (best to keep it similar to the other ones, for convenience), e.g. _actor-booking-scraper_.

## Actor name
Expand Down
Loading