-
Notifications
You must be signed in to change notification settings - Fork 199
docs: Add Actor task publication guide #2582
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
f6b0e73
99a3701
802e6cd
177cf3c
20998b2
8a5bf6a
bb5ee04
56a55a3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,165 @@ | ||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||
| title: Publish your Actor task | ||||||||||||||||||||||||||||||||||
| description: Publish a saved Actor task as a public use-case landing page on Apify Store by completing the display information, input, and dataset schema sections. | ||||||||||||||||||||||||||||||||||
| slug: /actors/publishing/publish-task | ||||||||||||||||||||||||||||||||||
| sidebar_position: 2 | ||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Actor tasks are shareable, pre-configured inputs for your Actors. Published tasks get their own public landing pages that showcase real-world use cases and improve discoverability through search engines and AI agents. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| A published task gets its own public landing page that shows users an example of what the Actor does, what inputs it uses, and what output to expect. Public tasks also appear in your Actor’s **Examples** tab. This helps people searching for or asking AI agents for a specific phrase or use case discover your Actor. Publishing tasks can lead to more page views, more runs, and, for monetized Actors, more revenue. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| This guide walks you through the publication process on the **Publication** tab and the steps to make a task public. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Before you publish a task, your Actor itself must already be public. See [Publish your Actor](./publish.mdx) for the prerequisites that apply at the Actor level. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| :::note Prerequisites | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - A published Actor that you own or maintain. | ||||||||||||||||||||||||||||||||||
| - A [saved task](../running/tasks.md) with a complete input configuration. | ||||||||||||||||||||||||||||||||||
| - An [input schema](/platform/actors/development/actor-definition/input-schema) and at least one [dataset schema view](/platform/actors/development/actor-definition/dataset-schema) defined on the Actor. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ::: | ||||||||||||||||||||||||||||||||||
|
Comment on lines
+14
to
+22
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This format is used throughout our docs |
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ## What tasks to publish | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Focus on tasks that represent a real use case someone would search for and that show your Actor solving a specific problem. Not every saved task needs a public landing page. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Demonstrate a specific job-to-be-done | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there a specific reason to use the phrase "job-to-be-done"? |
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The best tasks aim to solve a problem a user actually has. Instead of publishing a generic "default configuration" task, publish one that answers a question someone might type into a search engine or AI agent. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| For example, if you maintain a Google Maps scraper, Amazon scraper and Yahoo scraper Actors: | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| | Weak task | Strong task | | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the most minorest issue, but looks nice :) |
||||||||||||||||||||||||||||||||||
| | --- | --- | | ||||||||||||||||||||||||||||||||||
| | Google Maps - default config | Find dentists in San Francisco with reviews | | ||||||||||||||||||||||||||||||||||
| | Test run 2 | Extract restaurant emails for local marketing | | ||||||||||||||||||||||||||||||||||
|
jbartadev marked this conversation as resolved.
|
||||||||||||||||||||||||||||||||||
| | All fields enabled | Compare gym ratings across New York boroughs | | ||||||||||||||||||||||||||||||||||
| | Amazon default | Monitor Amazon product prices and reviews for market research | | ||||||||||||||||||||||||||||||||||
| | Yahoo Finance test | Track stock prices and news on Yahoo Finance | | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Each strong task focuses on a specific industry, location, or workflow. A user searching for "dentist data San Francisco" is far more likely to land on a page with that exact framing. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Target search traffic and AI discovery | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Each landing page is indexed by search engines and includes a markdown (`.md`) version that AI agents can access directly, making your task discoverable through AI-powered search and AI assistants. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Think of each task as a keyword-targeted landing page: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - Location-specific tasks: "Scrape real estate listings in Austin" rather than "Scrape real estate listings" | ||||||||||||||||||||||||||||||||||
| - Industry-specific tasks: "Monitor competitor pricing for electronics" rather than "Monitor competitor pricing" | ||||||||||||||||||||||||||||||||||
| - Workflow-specific tasks: "Export LinkedIn company data to Google Sheets" rather than "Export LinkedIn data" | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The more specific the task, the less competition it has in search results and the more relevant it is to the person who finds it. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| :::info Show the range of your Actor | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| If your Actor supports multiple use cases, publish a task for each one. A web scraping Actor might have tasks for lead generation, price monitoring, and content aggregation. Each task demonstrates a different capability and attracts a different audience. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ::: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ## Make your task public | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Once your task runs reliably and produces the output you want users to see, publish it from Apify Console. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 1. From your task's page in Apify Console, open the **Publication** tab. | ||||||||||||||||||||||||||||||||||
| 1. Complete the 3 sections: **Display information**, **Input**, and **Dataset schema**. | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Added links instead of just text |
||||||||||||||||||||||||||||||||||
| 1. Click **Publish task**. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Display information | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| This section controls how your task appears on the public task landing page and in search results. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| There are 3 fields in this section: | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - **Slug:** the URL-friendly name used in the task's landing page URL. | ||||||||||||||||||||||||||||||||||
| - **SEO task title:** shown as the heading on the landing page and as the page title in search results. | ||||||||||||||||||||||||||||||||||
| - **SEO description:** appears under the title on the landing page and as the meta description in search results. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| You can live preview how the fields propagate on the right (they update as you type): | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - **Page Preview:** how the landing page will look to visitors. | ||||||||||||||||||||||||||||||||||
| - **SERP Preview:** how the page will appear in search engine results pages (SERPs). | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| :::tip Title format | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Frame the title as the user's job-to-be-done, not as a description of the Actor's mechanics. A good title combines an action, a target, and a qualifier. | ||||||||||||||||||||||||||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Good examples: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - Track competitors' store locations | ||||||||||||||||||||||||||||||||||
| - Get a local B2B leads list | ||||||||||||||||||||||||||||||||||
| - Verify business emails from Google Maps | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Avoid titles like "Google Maps scraper - task 3" or "Test task" that describe the Actor instead of the user's goal. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ::: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Input | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The Input section controls which fields from your task's input configuration appear on the public landing page. By default, every field defined in your task input is selected. Deselect any field that is not relevant to the task's use case. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| This control affects display only. The task itself always runs with the full input configuration, regardless of which fields are selected here. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Use this section to: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - Show only the fields that demonstrate how the task is configured for its specific use case. | ||||||||||||||||||||||||||||||||||
| - Hide configuration fields that are not relevant to the task and would confuse first-time users. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| :::info Secret fields are protected automatically | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| All input fields with `"isSecret": true` in the Actor's [input schema](/platform/actors/development/actor-definition/input-schema) are automatically masked and never shown on the landing page. Before publishing, confirm sensitive fields are marked as secret. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ::: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Dataset schema | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The Dataset schema section selects which view of the Actor's dataset is rendered on the landing page. Each view organizes the output fields differently. Pick the one that best matches the task's use case. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| For more on configuring views, see [Dataset schema](/platform/actors/development/actor-definition/dataset-schema). | ||||||||||||||||||||||||||||||||||
|
jbartadev marked this conversation as resolved.
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ## Task landing page | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Each published task gets its own standalone landing page on the [Apify website](https://apify.com). This page is publicly accessible, indexed by search engines, and readable by AI agents. Published tasks also appear in the **Examples** tab of the Actor's detail page, linking visitors directly to the landing page. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### URL structure | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The landing page URL is built from your username, Actor name, and task name. For example: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```text | ||||||||||||||||||||||||||||||||||
| https://apify.com/john/google-maps-scraper/examples/find-dentists-san-francisco | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| Keep the task name short, descriptive, and focused on the use case keyword. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Landing page content | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
|  | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| The landing page displays the information you configured in the [Display information](#display-information), [Input](#input), and [Dataset schema](#dataset-schema) sections: | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - The **SEO task title** and **SEO description** at the top of the page. | ||||||||||||||||||||||||||||||||||
| - The selected **input fields** with their configured values, so visitors can see exactly how the task is set up. | ||||||||||||||||||||||||||||||||||
| - A preview of the **Dataset schema fields** based on the dataset view you selected. | ||||||||||||||||||||||||||||||||||
| - A call-to-action button that lets visitors try the task immediately. | ||||||||||||||||||||||||||||||||||
| - Generic sections explaining how Apify works and how to integrate it. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### What happens when a visitor tries the task | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| When a visitor clicks the call-to-action button, Apify creates a new task under their account with the same input configuration. The visitor gets their own independent copy. They can modify, run, and manage it without affecting your original task. You don't need to worry about other users consuming your resources or altering your configuration. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ## Next steps | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| - Set up [monetization](./monetize/index.mdx) for your Actor. | ||||||||||||||||||||||||||||||||||
| - Track quality with the [Actor quality score](./quality_score.mdx). | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My suggestion somewhat clashes with @jgagne's, feel free to discard or combine. Please keep the links, they are my main point.