From 8096af01b929d412caf6116dcbba86fc59c7c284 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Tue, 5 Aug 2025 11:23:03 +0200 Subject: [PATCH 01/29] Better titles --- sources/platform/actors/development/quick_start/index.mdx | 3 ++- .../platform/actors/development/quick_start/start_locally.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/platform/actors/development/quick_start/index.mdx b/sources/platform/actors/development/quick_start/index.mdx index 6c1e6c8a18..db48d5c3e5 100644 --- a/sources/platform/actors/development/quick_start/index.mdx +++ b/sources/platform/actors/development/quick_start/index.mdx @@ -1,5 +1,6 @@ --- -title: Quick start +title: Actor development quick start +sidebar_label: Quick start sidebar_position: 1 description: Create your first Actor using the Apify Web IDE or locally in your IDE. slug: /actors/development/quick-start diff --git a/sources/platform/actors/development/quick_start/start_locally.md b/sources/platform/actors/development/quick_start/start_locally.md index a95a6b48b2..95dfb19503 100644 --- a/sources/platform/actors/development/quick_start/start_locally.md +++ b/sources/platform/actors/development/quick_start/start_locally.md @@ -1,5 +1,6 @@ --- -title: Local development +title: Local Actor development +sidebar_label: Local development sidebar_position: 1 description: Create your first Actor locally on your machine, deploy it to the Apify platform, and run it in the cloud. slug: /actors/development/quick-start/locally From 7f2f1d135ca386b2729c7967baf472fa1bbfa231 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 6 Aug 2025 00:18:22 +0200 Subject: [PATCH 02/29] One more nit --- sources/legal/index.mdx | 2 +- sources/legal/sidebars.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/legal/index.mdx b/sources/legal/index.mdx index 1a8788870f..968eeb4b4a 100644 --- a/sources/legal/index.mdx +++ b/sources/legal/index.mdx @@ -10,7 +10,7 @@ hide_table_of_contents: true # Apify Legal -## Company details (Impressum) +## Legal info (Impressum) **Apify Technologies s.r.o.**
Registered seat: Vodickova 704/36, 110 00 Prague 1, Czech Republic
diff --git a/sources/legal/sidebars.js b/sources/legal/sidebars.js index 5e69718528..07176b21a1 100644 --- a/sources/legal/sidebars.js +++ b/sources/legal/sidebars.js @@ -2,7 +2,7 @@ module.exports = { legal: [ { type: 'link', - label: 'Company details (Impressum)', + label: 'Legal info (Impressum)', href: '/legal', }, { From a92b6a6c0eda8f74d3ed1575ee03ec655bc9bc78 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Fri, 22 Aug 2025 14:40:48 +0200 Subject: [PATCH 03/29] Better copy --- sources/platform/index.mdx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/platform/index.mdx b/sources/platform/index.mdx index 87d6993c11..2af659222d 100644 --- a/sources/platform/index.mdx +++ b/sources/platform/index.mdx @@ -11,9 +11,11 @@ import homepageContent from "./homepage_content.json"; # Apify platform -> **Apify** is a cloud platform that helps you build reliable web scrapers, fast, and automate anything you can do manually in a web browser. +> **Apify** is a cloud platform and marketplace of tools for web data extraction and automation. > -> **Actors** are serverless cloud programs running on the Apify platform that can easily crawl websites with millions of pages, but also perform arbitrary computing jobs such as sending emails or data transformations. They can be started manually, using our API or scheduler, and they can be easily integrated with other apps. +> **Actors** are serverless programs that run in the cloud. They can perform anything from simple actions such as filling out a web form or sending an email, to complex operations such as crawling a website with a million pages, or removing duplicates from a large dataset. Actors can persist their state and be restarted, and thus they can run as short or as long as necessary, from seconds to hours, even infinitely. + + ## Getting started From e060da946cf445da3ef3b60b40ee03f7fa7a00f1 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Fri, 22 Aug 2025 14:41:11 +0200 Subject: [PATCH 04/29] Better copy --- sources/platform/index.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/sources/platform/index.mdx b/sources/platform/index.mdx index 2af659222d..e4a090b8a6 100644 --- a/sources/platform/index.mdx +++ b/sources/platform/index.mdx @@ -15,8 +15,6 @@ import homepageContent from "./homepage_content.json"; > > **Actors** are serverless programs that run in the cloud. They can perform anything from simple actions such as filling out a web form or sending an email, to complex operations such as crawling a website with a million pages, or removing duplicates from a large dataset. Actors can persist their state and be restarted, and thus they can run as short or as long as necessary, from seconds to hours, even infinitely. - - ## Getting started **Learn how to run any Actor in Apify Store or create your own. A step-by-step guides through your first steps on the Apify platform.** From 94d56fa4cebbff1d440d8ccd26b8f4f38847f4c8 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Fri, 22 Aug 2025 15:42:14 +0200 Subject: [PATCH 05/29] Better copy --- sources/platform/integrations/ai/mcp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/integrations/ai/mcp.md b/sources/platform/integrations/ai/mcp.md index d3434293f6..543e74747e 100644 --- a/sources/platform/integrations/ai/mcp.md +++ b/sources/platform/integrations/ai/mcp.md @@ -8,7 +8,7 @@ slug: /integrations/mcp -The _Apify Model Context Protocol (MCP) Server_ allows AI applications to connect to Apify’s extensive library of Actors as tools to perform web scraping, data extraction, or other automation tasks in real time. +The Apify _Model Context Protocol (MCP)_ server allows AI applications and agents to use Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation. ![Apify MCP Server](../../images/apify_mcp_server.png) From 6342941497bd60d474bcc91d40ad22eb5bdf9c5e Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Fri, 22 Aug 2025 15:50:24 +0200 Subject: [PATCH 06/29] Better copy --- sources/platform/integrations/ai/mcp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sources/platform/integrations/ai/mcp.md b/sources/platform/integrations/ai/mcp.md index 543e74747e..932501c356 100644 --- a/sources/platform/integrations/ai/mcp.md +++ b/sources/platform/integrations/ai/mcp.md @@ -8,7 +8,8 @@ slug: /integrations/mcp -The Apify _Model Context Protocol (MCP)_ server allows AI applications and agents to use Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation. +The Apify [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server allows AI applications and agents to search and run Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation, +as well as access Apify documentation and tutorials from your AI coding environments. ![Apify MCP Server](../../images/apify_mcp_server.png) From 333a11682ece4da52249775e96e90739ed39d1b9 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 18 Sep 2025 11:44:38 +0200 Subject: [PATCH 07/29] Rename "Get items" API endpoint to "Get dataset items" for more clarity --- apify-api/openapi/openapi.yaml | 2 +- .../paths/actor-tasks/actor-tasks@{actorTaskId}@runs.yaml | 2 +- apify-api/openapi/paths/actors/acts@{actorId}@runs.yaml | 2 +- .../openapi/paths/datasets/datasets@{datasetId}@items.yaml | 2 +- .../tutorials/api/run_actor_and_retrieve_data_via_api.md | 2 +- sources/platform/actors/running/index.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apify-api/openapi/openapi.yaml b/apify-api/openapi/openapi.yaml index 7ddfa96cf4..77a6922c32 100644 --- a/apify-api/openapi/openapi.yaml +++ b/apify-api/openapi/openapi.yaml @@ -122,7 +122,7 @@ info: ``` However, there are a few explicitly described exceptions, such as - Dataset [Get items](#/reference/datasets/item-collection/get-items) or + [Get dataset items](#/reference/datasets/item-collection/get-items) or Key-value store [Get record](#/reference/key-value-stores/record/get-record) API endpoints, which return data in other formats. In case of an error, the response has the HTTP status code in the range of diff --git a/apify-api/openapi/paths/actor-tasks/actor-tasks@{actorTaskId}@runs.yaml b/apify-api/openapi/paths/actor-tasks/actor-tasks@{actorTaskId}@runs.yaml index c9c9da4293..e6b3f0096e 100644 --- a/apify-api/openapi/paths/actor-tasks/actor-tasks@{actorTaskId}@runs.yaml +++ b/apify-api/openapi/paths/actor-tasks/actor-tasks@{actorTaskId}@runs.yaml @@ -153,7 +153,7 @@ post: To fetch the Actor run results that are typically stored in the default dataset, you'll need to pass the ID received in the `defaultDatasetId` field received in the response JSON to the - [Get items](#/reference/datasets/item-collection/get-items) API endpoint. + [Get dataset items](#/reference/datasets/item-collection/get-items) API endpoint. operationId: actorTask_runs_post parameters: - name: actorTaskId diff --git a/apify-api/openapi/paths/actors/acts@{actorId}@runs.yaml b/apify-api/openapi/paths/actors/acts@{actorId}@runs.yaml index d14dc6da63..0a37342939 100644 --- a/apify-api/openapi/paths/actors/acts@{actorId}@runs.yaml +++ b/apify-api/openapi/paths/actors/acts@{actorId}@runs.yaml @@ -145,7 +145,7 @@ post: To fetch the Actor run results that are typically stored in the default dataset, you'll need to pass the ID received in the `defaultDatasetId` field - received in the response JSON to the [Get items](#/reference/datasets/item-collection/get-items) + received in the response JSON to the [Get dataset items](#/reference/datasets/item-collection/get-items) API endpoint. operationId: act_runs_post parameters: diff --git a/apify-api/openapi/paths/datasets/datasets@{datasetId}@items.yaml b/apify-api/openapi/paths/datasets/datasets@{datasetId}@items.yaml index f2dda00bcc..24f86003e6 100644 --- a/apify-api/openapi/paths/datasets/datasets@{datasetId}@items.yaml +++ b/apify-api/openapi/paths/datasets/datasets@{datasetId}@items.yaml @@ -1,7 +1,7 @@ get: tags: - Storage/Datasets - summary: Get items + summary: Get dataset items description: | Returns data stored in the dataset in a desired format. diff --git a/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md b/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md index a11e82f121..d852059967 100644 --- a/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md +++ b/sources/academy/tutorials/api/run_actor_and_retrieve_data_via_api.md @@ -254,7 +254,7 @@ The **run info** JSON also contains the IDs of the default [dataset](/platform/s > If you are scraping products, or any list of items with similar fields, the [dataset](/platform/storage/dataset) should be your storage of choice. Don't forget though, that dataset items are immutable. This means that you can only add to the dataset, and not change the content that is already inside it. -To retrieve the data from a dataset, send a GET request to the [**Get items**](/api/v2/dataset-items-get) endpoint and pass the `defaultDatasetId` into the URL. For a GET request to the default dataset, no token is needed. +To retrieve the data from a dataset, send a GET request to the [**Get dataset items**](/api/v2/dataset-items-get) endpoint and pass the `defaultDatasetId` into the URL. For a GET request to the default dataset, no token is needed. ```cURL https://api.apify.com/v2/datasets/DATASET_ID/items diff --git a/sources/platform/actors/running/index.md b/sources/platform/actors/running/index.md index 56541d822d..88be596a39 100644 --- a/sources/platform/actors/running/index.md +++ b/sources/platform/actors/running/index.md @@ -118,4 +118,4 @@ print(dataset_items) The newly started Actor runs under the account associated with the provided `token`, and therefore all resources consumed are charged to this user account. -Internally, the `call()` function invokes the [Run Actor](/api/v2/#/reference/actors/run-collection/run-actor) API endpoint, waits for the Actor to finish, and reads its output using the [Get items](/api/v2/#/reference/datasets/item-collection/get-items) API endpoint. +Internally, the `call()` function invokes the [Run Actor](/api/v2/#/reference/actors/run-collection/run-actor) API endpoint, waits for the Actor to finish, and reads its output using the [Get dataset items](/api/v2/#/reference/datasets/item-collection/get-items) API endpoint. From c7ee3f8d83c84ea9282212d45dd98596bb9881b1 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 18 Sep 2025 12:55:03 +0200 Subject: [PATCH 08/29] Better copy --- sources/legal/index.mdx | 2 +- sources/legal/sidebars.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sources/legal/index.mdx b/sources/legal/index.mdx index 6c475a485e..41da1ed879 100644 --- a/sources/legal/index.mdx +++ b/sources/legal/index.mdx @@ -10,7 +10,7 @@ hide_table_of_contents: true -## Legal info (Impressum) +## Legal info (Imprint) **Apify Technologies s.r.o.**
Registered seat: Vodickova 704/36, 110 00 Prague 1, Czech Republic
diff --git a/sources/legal/sidebars.js b/sources/legal/sidebars.js index 07176b21a1..678a12caef 100644 --- a/sources/legal/sidebars.js +++ b/sources/legal/sidebars.js @@ -2,7 +2,7 @@ module.exports = { legal: [ { type: 'link', - label: 'Legal info (Impressum)', + label: 'Legal info (Imprint)', href: '/legal', }, { From 18cbe8889c47cf399b8316984755158359df75c6 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 25 Sep 2025 10:43:04 +0200 Subject: [PATCH 09/29] Better copy --- .../actors/development/quick_start/build_with_ai.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/platform/actors/development/quick_start/build_with_ai.md b/sources/platform/actors/development/quick_start/build_with_ai.md index 904de4c8bc..ac13fec718 100644 --- a/sources/platform/actors/development/quick_start/build_with_ai.md +++ b/sources/platform/actors/development/quick_start/build_with_ai.md @@ -1,6 +1,7 @@ --- -title: Build with AI +title: Building new Actors with AI sidebar_position: 3 +sidebar_label: Build with AI description: Learn how to set up your environment, choose the right tools, and establish workflows for effective vibe coding slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 @@ -13,7 +14,8 @@ toc_max_heading_level: 4 import { RULES_AND_INSTRUCTIONS_PROMPT } from "@site/src/utils/ai-prompts"; import PromptButton from "@site/src/components/PromptButton"; -This guide explains how to enhance your development workflow by leveraging `llms.txt` and `llms-full.txt` with an AI assistant. You will learn how to provide foundational context and further refine AI's behavior with specific rules and instruction files. +Learn how to build new Actors using AI code generation and vibe coding tools such as Cursor or Visual Studio Code, +by feeding them with right instructions and context from the `llms.txt` or `llms-full.txt` Markdown files. ## `llms.txt` and `llms-full.txt` From c95b219eb73dce3118cc5baf7bc54088047ed715 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 25 Sep 2025 10:47:09 +0200 Subject: [PATCH 10/29] Better copy --- .../actors/development/quick_start/build_with_ai.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sources/platform/actors/development/quick_start/build_with_ai.md b/sources/platform/actors/development/quick_start/build_with_ai.md index ac13fec718..f8d0aa4f40 100644 --- a/sources/platform/actors/development/quick_start/build_with_ai.md +++ b/sources/platform/actors/development/quick_start/build_with_ai.md @@ -2,7 +2,7 @@ title: Building new Actors with AI sidebar_position: 3 sidebar_label: Build with AI -description: Learn how to set up your environment, choose the right tools, and establish workflows for effective vibe coding +description: Learn how to build new Actors using AI code generation and vibe coding tools such as Cursor or Visual Studio Code. slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 --- @@ -14,8 +14,9 @@ toc_max_heading_level: 4 import { RULES_AND_INSTRUCTIONS_PROMPT } from "@site/src/utils/ai-prompts"; import PromptButton from "@site/src/components/PromptButton"; -Learn how to build new Actors using AI code generation and vibe coding tools such as Cursor or Visual Studio Code, -by feeding them with right instructions and context from the `llms.txt` or `llms-full.txt` Markdown files. +This guide provides best practices how to build new Actors or improve existing ones using AI code generation +and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, +by providing the AI agents with the right instructions and context. ## `llms.txt` and `llms-full.txt` From 0f4f2e16f80fe02649db21f1e89d3ed2ddcbbdea Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 25 Sep 2025 10:51:16 +0200 Subject: [PATCH 11/29] Better copy --- .../actors/development/quick_start/build_with_ai.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/platform/actors/development/quick_start/build_with_ai.md b/sources/platform/actors/development/quick_start/build_with_ai.md index f8d0aa4f40..51f54d8261 100644 --- a/sources/platform/actors/development/quick_start/build_with_ai.md +++ b/sources/platform/actors/development/quick_start/build_with_ai.md @@ -2,19 +2,19 @@ title: Building new Actors with AI sidebar_position: 3 sidebar_label: Build with AI -description: Learn how to build new Actors using AI code generation and vibe coding tools such as Cursor or Visual Studio Code. +description: Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools. slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 --- -**Set up your environment, choose tools, and build workflows for effective AI development.** +**Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools.** --- import { RULES_AND_INSTRUCTIONS_PROMPT } from "@site/src/utils/ai-prompts"; import PromptButton from "@site/src/components/PromptButton"; -This guide provides best practices how to build new Actors or improve existing ones using AI code generation +This guide provides best practices for building new Actors or improving existing ones using AI code generation and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, by providing the AI agents with the right instructions and context. From 036d1625525efa4e7ccc570f1d071d6665761eec Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 25 Sep 2025 15:40:29 +0200 Subject: [PATCH 12/29] Better copy --- .../platform/actors/development/quick_start/build_with_ai.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/actors/development/quick_start/build_with_ai.md b/sources/platform/actors/development/quick_start/build_with_ai.md index 51f54d8261..1ea37732a3 100644 --- a/sources/platform/actors/development/quick_start/build_with_ai.md +++ b/sources/platform/actors/development/quick_start/build_with_ai.md @@ -7,7 +7,7 @@ slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 --- -**Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools.** +**Learn how to develop new Actors or improve existing ones using AI code generation and vibe coding tools.** --- From 882f22c253b20b0af69b51b43a9628aa2fdf43da Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 5 Nov 2025 16:38:53 -0800 Subject: [PATCH 13/29] Renamed "Web Scraping Academy" to "Apify Academy" --- sources/academy/index.mdx | 2 +- src/pages/index.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sources/academy/index.mdx b/sources/academy/index.mdx index 22dbc61fa0..f100aeb4cf 100644 --- a/sources/academy/index.mdx +++ b/sources/academy/index.mdx @@ -1,5 +1,5 @@ --- -title: Web Scraping Academy +title: Apify Academy description: Learn everything about web scraping and automation with our free courses that will turn you into an expert scraper developer. sidebar_position: 0 slug: / diff --git a/src/pages/index.tsx b/src/pages/index.tsx index ffb16bf363..12c6cf80d3 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -265,8 +265,8 @@ export default function Home() {
From 17e7686ff2f997a0eca6d87da6a06abeb1db2cb5 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 5 Nov 2025 17:00:54 -0800 Subject: [PATCH 14/29] Better writing --- .../input_schema/secret_input.md | 2 +- .../input_schema/specification.md | 107 ++++++++++-------- sources/platform/integrations/ai/mcp.md | 2 +- 3 files changed, 60 insertions(+), 51 deletions(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/secret_input.md b/sources/platform/actors/development/actor_definition/input_schema/secret_input.md index 061cfd48e2..bfde32d4c9 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/secret_input.md +++ b/sources/platform/actors/development/actor_definition/input_schema/secret_input.md @@ -69,7 +69,7 @@ If you read the `INPUT` key from the Actor run's default key-value store directl > await Actor.getValue('INPUT'); { username: 'username', - password: 'ENCRYPTED_VALUE:Hw/uqRMRNHmxXYYDJCyaQX6xcwUnVYQnH4fWIlKZL2Vhtq1rZmtoGXQSnhIXmF58+DjKlMZpTlK2zN3YUXk1ylzU6LfXyysOG/PISAfwm27FUgy3IfdgMyQggQ4MydLzdlzefX0mPRyixBviRcFhRTC+K7nK9lkATt3wJpj91YAZm104ZYkcd5KmsU2JX39vxN0A0lX53NjIenzs3wYPaPYLdjKIe+nqG9fHlL7kALyi7Htpy91ZgnQJ1s9saJRkKfWXvmLYIo5db69zU9dGCeJzUc0ca154O+KYYP7QTebJxqZNQsC8EH6sVMQU3W0qYKjuN8fUm1fRzyw/kKFacQ==:VfQd2ZbUt3S0RZ2ciywEWYVBbTTZOTiy' + password: 'ENCRYPTED_VALUE:Hw/uqRMRNHmxXYYDJCyaQX6xcwUnVYQnH4fWIlKZL...' } ``` diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index 6e51c95a14..488d09be93 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -142,33 +142,38 @@ Here is a rule of thumb for whether an input field should have a `prefill`, `def In summary, you can use each option independently or use a combination of **Prefill + Required** or **Prefill + Default**, but the combination of **Default + Required** doesn't make sense to use. -## Additional properties +## Input types Most types also support additional properties defining, for example, the UI input editor. ### String -#### Code input +String is the most common input field type, and provide +a number of editors and validations properties: -Example of a code input: +| Property | Value | Required | Description | +|----------|--------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `editor` | One of:
- `textfield`
- `textarea`
- `javascript`
- `python`
- `select`
- `datepicker`
- `fileupload`
- `hidden` | Yes | Visual editor used for the input field. | +| `pattern` | String | No | Regular expression that will be used to validate the input. If validation fails, the Actor will not run. | +| `minLength` | Integer | No | Minimum length of the string. | +| `maxLength` | Integer | No | Maximum length of the string. | +| `enum` | [String] | Required if `editor` is `select` | Using this field, you can limit values to the given array of strings. Input will be displayed as select box. | +| `enumTitles` | [String] | No | Titles for the `enum` keys described. | +| `nullable` | Boolean | No | Specifies whether `null` is an allowed value. | +| `isSecret` | Boolean | No | Specifies whether the input field will be stored encrypted. Only available with `textfield`, `textarea` and `hidden` editors. | +| `dateType` | One of
  • `absolute`
  • `relative`
  • `absoluteOrRelative`
| No | This property, which is only available with `datepicker` editor, specifies what date format should visual editor accept (The JSON editor accepts any string without validation.).

  • `absolute` value enables date input in `YYYY-MM-DD` format. To parse returned string regex like this can be used: `^(\d{4})-(0[1-9]\|1[0-2])-(0[1-9]\|[12]\d\|3[01])$`.

  • `relative` value enables relative date input in
    `{number} {unit}` format.
    Supported units are: days, weeks, months, years.

    The input is passed to the Actor as plain text (e.g., "3 weeks"). To parse it, regex like this can be used: `^(\d+)\s*(day\|week\|month\|year)s?$`.

  • `absoluteOrRelative` value enables both absolute and relative formats and user can switch between them. It's up to Actor author to parse a determine actual used format - regexes above can be used to check whether the returned string match one of them.

Defaults to `absolute`. | -```json -{ - "title": "Page function", - "type": "string", - "description": "Function executed for each request", - "editor": "javascript", - "prefill": "async () => { return $('title').text(); }" -} -``` +:::note Regex escape -Rendered input: +When using escape characters `\` for the regular expression in the `pattern` field, be sure to escape them to avoid invalid JSON issues. For example, the regular expression +`https:\/\/(www\.)?apify\.com\/.+` would become `https:\\/\\/(www\\.)?apify\\.com\\/.+`. -![Apify Actor input schema page function](./images/input-schema-page-function.png) +::: -#### Country selection +#### Select -Example of country selection using a select input: +Enables you to provide a list of predefined values for the string, including display titles. +Here's an example of `countryCode` input field with a country selection: ```json { @@ -182,11 +187,34 @@ Example of country selection using a select input: } ``` -Rendered input: +The `select` editor is rendered as drop-down in user interface: ![Apify Actor input schema - country input](./images/input-schema-country.png) -#### `datepicker` editor + +#### Code editor + +If the input string is code, you can use either `javascript` or `python` editor +for syntax highlighting. + +For example: + +```json +{ + "title": "Page function", + "type": "string", + "description": "Function executed for each request", + "editor": "javascript", + "prefill": "async () => { return $('title').text(); }" +} +``` + +Rendered input: + +![Apify Actor input schema page function](./images/input-schema-page-function.png) + + +#### Date picker Example of date selection using absolute and relative `datepicker` editor: @@ -230,48 +258,29 @@ The `anyDate` property renders a date picker that accepts both absolute and rela ![Apify Actor input schema - country input](./images/input-schema-date-both.png) -#### `fileupload` editor - -The `fileupload` editor enables users to specify a file as input. The input is passed to the Actor as a string. It is the Actor author's responsibility to interpret this string, including validating its existence and format. +#### Advanced date and time handling -The editor makes it easier to users to upload the file to a key-value store of their choice. +While the `datepicker` editor doesn't support setting time values visually, you can allow users to handle more complex datetime formats and pass them via JSON. The following regex allows users to optionally extend the date with full ISO datetime format or pass `hours` and `minutes` as a relative date: -![Apify Actor input schema - fileupload input](./images/input-schema-fileupload-input.png) +`"pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$"` -The user provides either a URL or uploads the file to a key-value store (existing or new). +When implementing time-based fields, make sure to explain to your users through the description that the time values should be provided in UTC. This helps prevent timezone-related issues. -![Apify Actor input schema - fileupload input options](./images/input-schema-fileupload-modal.png) -Properties: +#### File upload -| Property | Value | Required | Description | -|----------|--------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `editor` | One of:
- `textfield`
- `textarea`
- `javascript`
- `python`
- `select`
- `datepicker`
- `fileupload`
- `hidden` | Yes | Visual editor used for the input field. | -| `pattern` | String | No | Regular expression that will be used to validate the input. If validation fails, the Actor will not run. | -| `minLength` | Integer | No | Minimum length of the string. | -| `maxLength` | Integer | No | Maximum length of the string. | -| `enum` | [String] | Required if `editor` is `select` | Using this field, you can limit values to the given array of strings. Input will be displayed as select box. | -| `enumTitles` | [String] | No | Titles for the `enum` keys described. | -| `nullable` | Boolean | No | Specifies whether `null` is an allowed value. | -| `isSecret` | Boolean | No | Specifies whether the input field will be stored encrypted. Only available with `textfield`, `textarea` and `hidden` editors. | -| `dateType` | One of
  • `absolute`
  • `relative`
  • `absoluteOrRelative`
| No | This property, which is only available with `datepicker` editor, specifies what date format should visual editor accept (The JSON editor accepts any string without validation.).

  • `absolute` value enables date input in `YYYY-MM-DD` format. To parse returned string regex like this can be used: `^(\d{4})-(0[1-9]\|1[0-2])-(0[1-9]\|[12]\d\|3[01])$`.

  • `relative` value enables relative date input in
    `{number} {unit}` format.
    Supported units are: days, weeks, months, years.

    The input is passed to the Actor as plain text (e.g., "3 weeks"). To parse it, regex like this can be used: `^(\d+)\s*(day\|week\|month\|year)s?$`.

  • `absoluteOrRelative` value enables both absolute and relative formats and user can switch between them. It's up to Actor author to parse a determine actual used format - regexes above can be used to check whether the returned string match one of them.

Defaults to `absolute`. | - -:::note Regex escape - -When using escape characters `\` for the regular expression in the `pattern` field, be sure to escape them to avoid invalid JSON issues. For example, the regular expression -`https:\/\/(www\.)?apify\.com\/.+` would become `https:\\/\\/(www\\.)?apify\\.com\\/.+`. +The `fileupload` editor enables users to specify a file as input. The input is passed to the Actor as a string. It is the Actor author's responsibility to interpret this string, including validating its existence and format. -::: +The editor makes it easier to users to upload the file to a key-value store of their choice. -#### Advanced date and time handling +![Apify Actor input schema - fileupload input](./images/input-schema-fileupload-input.png) -While the `datepicker` editor doesn't support setting time values visually, you can allow users to handle more complex datetime formats and pass them via JSON. The following regex allows users to optionally extend the date with full ISO datetime format or pass `hours` and `minutes` as a relative date: +The user provides either a URL or uploads the file to a key-value store (existing or new). -`"pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$"` +![Apify Actor input schema - fileupload input options](./images/input-schema-fileupload-modal.png) -When implementing time-based fields, make sure to explain to your users through the description that the time values should be provided in UTC. This helps prevent timezone-related issues. -### Boolean +### Boolean type Example options with group caption: @@ -343,7 +352,7 @@ Properties: | `unit` | String | No | Unit displayed next to the field in UI,
for example _second_, _MB_, etc. | | `nullable` | Boolean | No | Specifies whether null is an allowed value. | -### Object +### Object type Example of proxy configuration: diff --git a/sources/platform/integrations/ai/mcp.md b/sources/platform/integrations/ai/mcp.md index adb5cadccd..f3751c7528 100644 --- a/sources/platform/integrations/ai/mcp.md +++ b/sources/platform/integrations/ai/mcp.md @@ -12,7 +12,7 @@ toc_max_heading_level: 4 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The Apify [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server allows AI applications and agents to search and run Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation, +The Apify's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server allows AI applications and agents to search and run Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation, as well as access Apify documentation and tutorials from your AI coding environments. ![Apify MCP Server](../../images/apify_mcp_server.png) From d30fced7a7009a350755ed7066dde3540be8b226 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 5 Nov 2025 17:08:09 -0800 Subject: [PATCH 15/29] Better writing --- .../input_schema/specification.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index 488d09be93..cd137101c7 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -11,11 +11,18 @@ sidebar_label: Input schema specification --- -The Actor input schema serves three main purposes: +Actor input schema is a JSON file which defines the schema and description of the input object and its properties accepted by the +Actor on start. The file adheres to [JSON schema](https://json-schema.org/) with our extensions, +and describes a single Actor input object +and its properties, including documentation, default value, and user interface definition. + +The Actor input schema file is used to: + +- Validate the passed input JSON object on Actor run, so that Actors don't need to perform input validation and error handling in their code. +- Render user interface for Actors to make it easy for users to run and test them manually. +- Generate Actor API documentation and integration code examples on the web or in CLI, making Actors easy to integrate for users. +- Simplify integration of Actors into automation workflows such as Zapier or Make, by providing smart connectors that smartly pre-populate and link Actor input properties. -- It ensures the input data supplied to the Actor adhere to specified requirements and validation rules. -- It is used by the Apify platform to generate a user-friendly interface for configuring and running your Actor. -- It simplifies invoking your Actors from external systems by generating calling code and connectors for integrations. To define an input schema for an Actor, set `input` field in the `.actor/actor.json` file to an input schema object (described below), or path to a JSON file containing the input schema object. For backwards compatibility, if the `input` field is omitted, the system looks for an `INPUT_SCHEMA.json` file either in the `.actor` directory or the Actor's top-level directory—but note that this functionality is deprecated and might be removed in the future. The maximum allowed size for the input schema file is 500 kB. @@ -114,7 +121,7 @@ Even though the structure of the Actor input schema is similar to JSON schema, t ::: -## Fields +## Input fields Each field of your input is described under its key in the `inputSchema.properties` object. The field might have `integer`, `string`, `array`, `object`, or `boolean` type, and its specification contains the following properties: From 2d18b8ba6469aaac8ad311c9078ee29fc0fba059 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 5 Nov 2025 17:21:58 -0800 Subject: [PATCH 16/29] Better writing --- sources/platform/quick-start/build_with_ai.md | 44 +++++++------------ 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/sources/platform/quick-start/build_with_ai.md b/sources/platform/quick-start/build_with_ai.md index 8e0a6b48b0..d738491251 100644 --- a/sources/platform/quick-start/build_with_ai.md +++ b/sources/platform/quick-start/build_with_ai.md @@ -1,12 +1,13 @@ --- title: Build Actors with AI sidebar_position: 3 -description: Use pre-built prompts, refer to Apify docs via llms.txt, and follow best practices for effective vibe coding. +sidebar_label: Build with AI +description: Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools. slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 --- -**Use pre-built prompts, reference Apify documentation through `/llms.txt`, and follow best practices to build Actors efficiently with AI coding assistants.** +**Learn how to develop new Actors or improve existing ones using AI code generation and vibe coding tools.** --- @@ -15,7 +16,9 @@ import PromptButton from "@site/src/components/PromptButton"; import InstallMCPButton from "@site/src/components/InstallMCPButton"; import copyForAI from "./images/copy-for-ai.png"; -You will learn several approaches to building Apify Actors with the help of AI coding assistants. This guide includes independent instructions, tools, and best practices that you can use individually or combine together. Each section focuses on a specific part of the process such as prompt usage, Actor templates, Apify MCP server tools, or documentation integration, so you can follow only the parts that fit your development style. +This guide provides best practices for building new Actors or improving existing ones using AI code generation +and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, +by providing the AI agents with the right instructions and context. ## AI coding assistant instructions @@ -66,30 +69,17 @@ Every page in the Apify documentation has a **Copy for LLM** button. You can use Copy for LLM -## Use `llms.txt` and `llms-full.txt` - -Search engines weren't built for Large Language Models (LLMs), but LLMs need context. That's why we've created [`llms.txt`](https://docs.apify.com/llms.txt) and [`llms-full.txt`](https://docs.apify.com/llms-full.txt) for our documentation. These files can provide additional context if you link them. - - - - - - - - - - - - - - - - - - -
FilePurpose
llms.txtContains index of the docs page in Markdown, with links to all subpages in Markdown.
- llms-full.txt - Contains a full dump of documentation in Markdown.
+## Use `/llms.txt` files + +The entire Apify documentation is available in Markdown format to make it easy to +digest by LLMs and AI coding tools. There are two special files: + +- **https://docs.apify.com/llms.txt**: A Markdown file with an index to all documentation pages in Markdown format. This is based on the [llmstxt.org](https://llmstxt.org/) standard. +- **https://docs.apify.com/llms-full.txt**: A single Markdown file with a complete dump of the entire Apify documentation. + +Note that for each Apify documentation page, you can get the Markdown version by adding `.md` to the URL. For example: + +https://docs.apify.com/platform/actors => https://docs.apify.com/platform/actors.md :::note Provide link to AI assistants From 4c39c86445e37a971fe6c5b52f6e174ec7a7351c Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Wed, 5 Nov 2025 17:23:15 -0800 Subject: [PATCH 17/29] Better writing --- .../development/quick_start/build_with_ai.md | 137 ------------------ 1 file changed, 137 deletions(-) delete mode 100644 sources/platform/actors/development/quick_start/build_with_ai.md diff --git a/sources/platform/actors/development/quick_start/build_with_ai.md b/sources/platform/actors/development/quick_start/build_with_ai.md deleted file mode 100644 index 1ea37732a3..0000000000 --- a/sources/platform/actors/development/quick_start/build_with_ai.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Building new Actors with AI -sidebar_position: 3 -sidebar_label: Build with AI -description: Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools. -slug: /actors/development/quick-start/build-with-ai -toc_max_heading_level: 4 ---- - -**Learn how to develop new Actors or improve existing ones using AI code generation and vibe coding tools.** - ---- - -import { RULES_AND_INSTRUCTIONS_PROMPT } from "@site/src/utils/ai-prompts"; -import PromptButton from "@site/src/components/PromptButton"; - -This guide provides best practices for building new Actors or improving existing ones using AI code generation -and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, -by providing the AI agents with the right instructions and context. - -## `llms.txt` and `llms-full.txt` - -Search engines weren't built for Large Language Models (LLMs), but they needs context. That's why we've created [`llms.txt`](https://docs.apify.com/llms.txt) and [`llms-full.txt`](https://docs.apify.com/llms-full.txt) for our documentation. These files follow the [growing standard](https://llmstxt.org/) for LLMs consumption. - - - - - - - - - - - - - - - - - - -
FilePurpose
llms.txtContains index of the docs page in Markdown, with links to all subpages in Markdown.
- llms-full.txt - Contains a full dump of documentation in Markdown.
- -### Use llms.txt and llms-full.txt - -LLMs don't automatically discover `llms.txt` files, you need to add the link manually. Some tools like [Cursor](https://www.cursor.com/) provide settings for this. - -#### Cursor - -Go to: **Settings -> Cursor Settings -> Indexing & Docs -> Add Doc**. - -Now, you can just provide the link to Apify `llms-full.txt`: - -```markdown -https://docs.apify.com/llms-full.txt -``` - -![Add llms-full.txt to Cursor](./images/cursor.png) - -#### Windsurf - -Open Windsurf Cascade, and add context via `@web`: - -![Add llms-full.txt to Windsurf](./images/windsurf.png) - -:::note Windsurf @docs - -Windsurf provides the `@docs` command, but you cannot customize it. It means that you cannot add your own documentation. - -::: - -#### GitHub Copilot - -Open Copilot Chat mode, and add context via `#fetch`: - -![Add llms.txt to Copilot](./images/github-copilot.png) - -:::note GitHub Copilot and documentation - -Similar to Windsurf, GitHub Copilot does not provide an option for adding your own documentation. - -::: - -#### Ask AI - -New to Apify? Ask questions and provide the `llms.txt` link. Popular AI models can search the web. With the right context, you get better answers: - -![Ask about Apify](./images/claude.png) - -## View pages as markdown - -Every page in Apify documentation is available in markdown format. Simply add `.md` to any documentation URL to access the raw markdown content. - -For example: - -- [https://docs.apify.com/platform](https://docs.apify.com/platform) → [https://docs.apify.com/platform.md](https://docs.apify.com/platform.md) -- [https://docs.apify.com/api](https://docs.apify.com/api) → [https://docs.apify.com/api.md](https://docs.apify.com/api.md) - -This is useful when you want to: - -- Copy documentation content for AI prompts -- Reference exact markdown syntax -- Access content programmatically - -## Add rules - -To get the most from AI Code Editors, add rules or instructions. - -See how to set up rules for your AI Code Editors: - -- [Cursor Rules](https://docs.cursor.com/en/context/rules) -- [Windsurf Rules](https://docs.windsurf.com/windsurf/cascade/memories#rules) -- [GitHub Copilot instructions](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions) - -### Apify rules and instructions - -The best rules and instructions are specific for individual use cases, but we provide a prompt to help you get start with creating rules and instructions: - - - -:::info Keep your rules and instructions up to date - -As the project evolves, you might introduce new things. Always make sure that your rules and instructions are up to date. - -::: - -## Best practices - -- _Small tasks_: Don't ask AI for many tasks at once. Break complex problems into smaller pieces. Solve them step by step. - -- _Iterative approach_: Work iteratively with clear steps. Start with a basic implementation and gradually add complexity. - -- _Versioning_: Version your changes often using git. This lets you track changes, roll back if needed, and maintain a clear history. - -- _Security_: Don't expose API keys, secrets, or sensitive information in your code or conversations with LLM assistants. From d61bc8734c8fdcd760235f8c7c5d34b0b6113781 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 6 Nov 2025 10:23:20 -0800 Subject: [PATCH 18/29] Better writing --- sources/platform/integrations/ai/mcp.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sources/platform/integrations/ai/mcp.md b/sources/platform/integrations/ai/mcp.md index f3751c7528..c74bf5b356 100644 --- a/sources/platform/integrations/ai/mcp.md +++ b/sources/platform/integrations/ai/mcp.md @@ -12,8 +12,10 @@ toc_max_heading_level: 4 import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The Apify's [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server allows AI applications and agents to search and run Actors from [Apify Store](https://apify.com/store) as tools for web scraping, data extraction, or automation, -as well as access Apify documentation and tutorials from your AI coding environments. +The Apify's MCP server ([mcp.apify.com](https://mcp.apify.com)) allows AI applications and agents to interact with the Apify platform +using [Model Context Protocol](https://modelcontextprotocol.io/). The server enables AI agents to +discover and run Actors from [Apify Store](https://apify.com/store), access storages and results, +and enabled AI coding assistants to access Apify documentation and tutorials. ![Apify MCP Server](../../images/apify_mcp_server.png) From ca51b03f28d01a066eb723b977fd9cc91d5ef5c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:24:32 +0100 Subject: [PATCH 19/29] Update sources/platform/quick-start/build_with_ai.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- sources/platform/quick-start/build_with_ai.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sources/platform/quick-start/build_with_ai.md b/sources/platform/quick-start/build_with_ai.md index d738491251..38d02f9c57 100644 --- a/sources/platform/quick-start/build_with_ai.md +++ b/sources/platform/quick-start/build_with_ai.md @@ -16,9 +16,7 @@ import PromptButton from "@site/src/components/PromptButton"; import InstallMCPButton from "@site/src/components/InstallMCPButton"; import copyForAI from "./images/copy-for-ai.png"; -This guide provides best practices for building new Actors or improving existing ones using AI code generation -and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, -by providing the AI agents with the right instructions and context. +This guide provides best practices for building new Actors or improving existing ones using AI code generation and vibe coding tools such as Cursor, Claude Code, or Visual Studio Code, by providing the AI agents with the right instructions and context. ## AI coding assistant instructions From 7fb926814a71274e143184de7c6dd8c28cfa7580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:24:45 +0100 Subject: [PATCH 20/29] Update sources/platform/quick-start/build_with_ai.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- sources/platform/quick-start/build_with_ai.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/quick-start/build_with_ai.md b/sources/platform/quick-start/build_with_ai.md index 38d02f9c57..33679be2c5 100644 --- a/sources/platform/quick-start/build_with_ai.md +++ b/sources/platform/quick-start/build_with_ai.md @@ -2,7 +2,7 @@ title: Build Actors with AI sidebar_position: 3 sidebar_label: Build with AI -description: Learn how to build new Actors or improving existing ones using AI code generation and vibe coding tools. +description: Learn how to build new Actors or improve existing ones using AI code generation and vibe coding tools. slug: /actors/development/quick-start/build-with-ai toc_max_heading_level: 4 --- From 0b1285936367875e10f572c89cbaaaa6c7abb907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:24:59 +0100 Subject: [PATCH 21/29] Update sources/platform/index.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- sources/platform/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/index.mdx b/sources/platform/index.mdx index 2886d8dc88..a0ef579230 100644 --- a/sources/platform/index.mdx +++ b/sources/platform/index.mdx @@ -11,7 +11,7 @@ import CardGrid from "@site/src/components/CardGrid"; import homepageContent from "./homepage_content.json"; -> **Apify** is a cloud platform and marketplace of tools for web data extraction and automation. +**Apify** is a cloud platform and marketplace for web scraping and automation tools. > > **Actors** are serverless programs that run in the cloud. They can perform anything from simple actions such as filling out a web form or sending an email, to complex operations such as crawling a website with a million pages, or removing duplicates from a large dataset. Actors can persist their state and be restarted, and thus they can run as short or as long as necessary, from seconds to hours, even infinitely. From 88ffcdf41a2fafb990d3fb4f0c41cf9c1e07432c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:25:22 +0100 Subject: [PATCH 22/29] Update sources/platform/index.mdx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- sources/platform/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/index.mdx b/sources/platform/index.mdx index a0ef579230..560f579b38 100644 --- a/sources/platform/index.mdx +++ b/sources/platform/index.mdx @@ -13,7 +13,7 @@ import homepageContent from "./homepage_content.json"; **Apify** is a cloud platform and marketplace for web scraping and automation tools. > -> **Actors** are serverless programs that run in the cloud. They can perform anything from simple actions such as filling out a web form or sending an email, to complex operations such as crawling a website with a million pages, or removing duplicates from a large dataset. Actors can persist their state and be restarted, and thus they can run as short or as long as necessary, from seconds to hours, even infinitely. +> **Actors** are serverless cloud programs running on the Apify platform. They can perform simple actions like filling out web forms or sending emails, or complex operations like crawling millions of web pages or transforming large datasets. Actors can be started manually, via API, or on a schedule, and integrate easily with other applications. ## Getting started From 8ad5ec1a0968115f84f2feb6b7d72464c3867426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:25:56 +0100 Subject: [PATCH 23/29] Update sources/platform/actors/development/actor_definition/input_schema/specification.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- .../development/actor_definition/input_schema/specification.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index cd137101c7..11eec04e39 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -155,8 +155,7 @@ Most types also support additional properties defining, for example, the UI inpu ### String -String is the most common input field type, and provide -a number of editors and validations properties: +String is the most common input field type, and provide a number of editors and validations properties: | Property | Value | Required | Description | |----------|--------|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| From e7eb054b1297418c982fe131ab98c7cfad0428ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:26:12 +0100 Subject: [PATCH 24/29] Update sources/platform/actors/development/actor_definition/input_schema/specification.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- .../development/actor_definition/input_schema/specification.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index 11eec04e39..c77ce7ecec 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -171,8 +171,7 @@ String is the most common input field type, and provide a number of editors and :::note Regex escape -When using escape characters `\` for the regular expression in the `pattern` field, be sure to escape them to avoid invalid JSON issues. For example, the regular expression -`https:\/\/(www\.)?apify\.com\/.+` would become `https:\\/\\/(www\\.)?apify\\.com\\/.+`. +When using escape characters `\` for the regular expression in the `pattern` field, be sure to escape them to avoid invalid JSON issues. For example, the regular expression `https:\/\/(www\.)?apify\.com\/.+` would become `https:\\/\\/(www\\.)?apify\\.com\\/.+`. ::: From a24dd1462173405944a8339f2e695707fae66bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 19:26:20 +0100 Subject: [PATCH 25/29] Update sources/platform/actors/development/actor_definition/input_schema/specification.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- .../actor_definition/input_schema/specification.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index c77ce7ecec..7df9f0f248 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -11,10 +11,7 @@ sidebar_label: Input schema specification --- -Actor input schema is a JSON file which defines the schema and description of the input object and its properties accepted by the -Actor on start. The file adheres to [JSON schema](https://json-schema.org/) with our extensions, -and describes a single Actor input object -and its properties, including documentation, default value, and user interface definition. +Actor input schema is a JSON file which defines the schema and description of the input object and its properties accepted by the Actor on start. The file adheres to [JSON schema](https://json-schema.org/) with our extensions, and describes a single Actor input object and its properties, including documentation, default value, and user interface definition. The Actor input schema file is used to: From bd742231b4cae4f7d7755d464bc362cd29e0d6b0 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 6 Nov 2025 13:13:28 -0800 Subject: [PATCH 26/29] Expanded Actor ideas --- .../what_software_an_actor_can_be.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md b/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md index beeda79128..be1ebd655e 100644 --- a/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md +++ b/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md @@ -36,14 +36,21 @@ Examples: ### SaaS API wrappers -These Actors wrap existing SaaS services as Actors to make them accessible through the Apify platform and its many integrations. +These Actors wrap existing SaaS services as Actors to make them accessible through the Apify platform and its many integrations, potentially with additional services built on top. -Examples: +Example Actors: - [OpenRouter](https://apify.com/apify/openrouter) - [Parsera](https://apify.com/parsera-labs/parsera) - [Super Scraper API](https://apify.com/apify/super-scraper-api) +For inspiration, see: + +- [RapidAPI Hub](https://rapidapi.com/hub) +- [Google Cloud APIs](https://cloud.google.com/apis) +- [{API}Market](https://api.market/) +- [openapi](https://openapi.com/products) + ### Open-source libraries Many open-source automation or data processing tools do not have a presence in the cloud, and need to be installed locally in "just five easy steps". Wrap those tools as Actors and make it easy for users to try and integrate those tools. @@ -117,10 +124,16 @@ Build Actors that use LLMs to perform complex tasks autonomously. These Actors c :::note Secure execution Actors are cloud-based sandboxes that can securely run any AI-generated code. +As LLMs are [generally better](https://www.anthropic.com/engineering/code-execution-with-mcp) +at generating code than selecting tools, one can use Actors to generate task-specific code and +expose it using Actor interface to other apps and agents. ::: -For inspiration, check out the [Agents category](https://apify.com/store/categories/agents) in Apify Store. +For inspiration, see: + +- [Agents category](https://apify.com/store/categories/agents) in Apify Store +- [agent.ai marketplace](https://agent.ai/) ### Other @@ -190,5 +203,6 @@ Beyond the [Actor ideas](https://apify.com/ideas) page, you can find new Actor i - Your experience: Draw from problems you've encountered in your work - Community discussions: Browse Reddit, Twitter, Stack Overflow, and forums for user pain points - Competitor analysis: Research existing tools and identify gaps +- Other portals, such as [Indiehackers](https://www.indiehackers.com/), [Superframeworks](https://superframeworks.beehiiv.com/t/startup-ideas), etc. Once you get one, learn how to [validate your Actor idea](/academy/build-and-publish/actor-ideas/actor-validation). From 33d80291da0f28c197ba9f3f9671476b4bf7233e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20=C4=8Curn?= Date: Thu, 6 Nov 2025 22:27:32 +0100 Subject: [PATCH 27/29] Update sources/platform/quick-start/build_with_ai.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michał Olender <92638966+TC-MO@users.noreply.github.com> --- sources/platform/quick-start/build_with_ai.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sources/platform/quick-start/build_with_ai.md b/sources/platform/quick-start/build_with_ai.md index 33679be2c5..ebd3557953 100644 --- a/sources/platform/quick-start/build_with_ai.md +++ b/sources/platform/quick-start/build_with_ai.md @@ -69,15 +69,18 @@ Every page in the Apify documentation has a **Copy for LLM** button. You can use ## Use `/llms.txt` files -The entire Apify documentation is available in Markdown format to make it easy to -digest by LLMs and AI coding tools. There are two special files: +The entire Apify documentation is available in Markdown format for use with LLMs and AI coding tools. Two consolidated files are available: -- **https://docs.apify.com/llms.txt**: A Markdown file with an index to all documentation pages in Markdown format. This is based on the [llmstxt.org](https://llmstxt.org/) standard. -- **https://docs.apify.com/llms-full.txt**: A single Markdown file with a complete dump of the entire Apify documentation. +- `https://docs.apify.com/llms.txt`: A Markdown file with an index of all documentation pages in Markdown format, based on the [llmstxt.org](https://llmstxt.org/) standard. +- `https://docs.apify.com/llms-full.txt`: All Apify documentation consolidated in a single Markdown file. -Note that for each Apify documentation page, you can get the Markdown version by adding `.md` to the URL. For example: +:::tip Access Markdown source -https://docs.apify.com/platform/actors => https://docs.apify.com/platform/actors.md +Add `.md` to any documentation page URL to view its Markdown source. + +Example: `https://docs.apify.com/platform/actors` > `https://docs.apify.com/platform/actors.md` + +::: :::note Provide link to AI assistants From 7a8fbf4a6cdc350463773ce3e7f99fe77eb5a4a5 Mon Sep 17 00:00:00 2001 From: Jan Curn Date: Thu, 6 Nov 2025 13:30:23 -0800 Subject: [PATCH 28/29] Better writing --- .../development/actor_definition/input_schema/specification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/platform/actors/development/actor_definition/input_schema/specification.md b/sources/platform/actors/development/actor_definition/input_schema/specification.md index 7df9f0f248..3e0f5b7022 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/specification.md +++ b/sources/platform/actors/development/actor_definition/input_schema/specification.md @@ -523,7 +523,7 @@ For example, in the input schema like this: The `timeout` sub-property will have a default value of `60` (from the parent object), while the `locale` sub-property will have a default value of `"en-US"` (from its own definition). -#### `schemaBased` editor +#### Schema-based editor Object with sub-schema defined can use the `schemaBased` editor, which provides a user-friendly interface for editing each property individually. It renders all properties based on their type (and `editor` field), providing a user-friendly interface for complex objects. From 41ecd816ddaecbfb641e15ff0a8c1498d220edfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Olender?= <92638966+TC-MO@users.noreply.github.com> Date: Thu, 6 Nov 2025 22:46:03 +0100 Subject: [PATCH 29/29] Update sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md fix broken builds --- .../actor-ideas/what_software_an_actor_can_be.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md b/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md index be1ebd655e..6c01bfa8b3 100644 --- a/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md +++ b/sources/academy/build-and-publish/actor-ideas/what_software_an_actor_can_be.md @@ -48,7 +48,7 @@ For inspiration, see: - [RapidAPI Hub](https://rapidapi.com/hub) - [Google Cloud APIs](https://cloud.google.com/apis) -- [{API}Market](https://api.market/) +- [\{API\}Market](https://api.market/) - [openapi](https://openapi.com/products) ### Open-source libraries