From 44c949b38ab78af41bf109b620e9f00fc41ef8a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Fri, 31 Oct 2025 12:23:21 +0100
Subject: [PATCH 01/10] docs: improve deploying section
remove outdated images
remove H1
polish prose
update structure & formatting
use admonitions instead of block quotes
---
.../platform/deploying_your_code/deploying.md | 24 +++++++++++----
.../deploying_your_code/docker_file.md | 30 ++++++++++++++-----
.../platform/deploying_your_code/index.md | 18 +++++------
.../deploying_your_code/input_schema.md | 10 +++++--
.../deploying_your_code/inputs_outputs.md | 12 +++++---
.../deploying_your_code/output_schema.md | 6 +++-
6 files changed, 70 insertions(+), 30 deletions(-)
diff --git a/sources/academy/platform/deploying_your_code/deploying.md b/sources/academy/platform/deploying_your_code/deploying.md
index 6eb41e895a..25d530c19c 100644
--- a/sources/academy/platform/deploying_your_code/deploying.md
+++ b/sources/academy/platform/deploying_your_code/deploying.md
@@ -1,11 +1,11 @@
---
title: Publishing your Actor
-description: Push local code to the platform, or create a new Actor on the console and integrate it with a Git repository to optionally automatically rebuild any new changes.
+description: Push local code to the platform, or create an Actor and integrate it with a Git repository for automatic rebuilds.
sidebar_position: 5
slug: /deploying-your-code/deploying
---
-**Push local code to the platform, or create a new Actor on the console and integrate it with a Git repository to optionally automatically rebuild any new changes.**
+**Push local code to the platform, or create an Actor and integrate it with a Git repository for automatic rebuilds.**
---
@@ -15,7 +15,11 @@ Once you've **actorified** your code, there are two ways to deploy it to the Api
Before we deploy our project onto the Apify platform, let's ensure that we've pushed the changes we made in the last 3 lessons into our remote GitHub repository.
-> The benefit of using this method is that any time you push to the Git repository, the code on the platform is also updated and the Actor is automatically rebuilt. Also, you don't have to use a GitHub repository - you can use GitLab or any other service you'd like.
+:::tip Git integration
+
+The benefit of using this method is that any time you push to the Git repository, the code on the platform is also updated and the Actor is automatically rebuilt. Also, you don't have to use a GitHub repository - you can use GitLab or any other service you'd like.
+
+:::
### Creating the Actor
@@ -45,13 +49,21 @@ That's it! The Actor should now pull its source code from the repository and aut
## Without a GitHub repository (using the Apify CLI) {#with-apify-cli}
-> If you don't yet have the Apify CLI, learn how to install it and log in by following along with [this brief lesson](../../glossary/tools/apify_cli.md) about it.
+:::info CLI prerequisite
+
+If you don't yet have the Apify CLI, learn how to install it and log in by following along with [this brief lesson](../../glossary/tools/apify_cli.md) about it.
+
+:::
If you're logged in to the Apify CLI, the `apify push` command can be used to push the code straight onto the Apify platform from your local machine (no GitHub repository required), where it will automatically be built for you. Prior to running this command, make sure that you have an **.actor/actor.json** file at the root of the project. If you don't already have one, you can use `apify init .` to automatically generate one for you.
-One important thing to note is that you can use a `.gitignore` file to exclude files from being pushed. When you use `apify push` without a `.gitignore`, the full folder contents will be pushed, meaning that even the **storage** and **node_modules** will be pushed. These files are unnecessary to push, as they are both generated on the platform.
+One important thing to note is that you can use a `.gitignore` file to exclude files from being pushed. When you use `apify push` without a `.gitignore`, the full folder contents will be pushed, meaning that even the `storage` and `node_modules` will be pushed. These files are unnecessary to push, as they are both generated on the platform.
+
+:::caution Development only
+
+The `apify push` command should only really be used for quickly pushing and testing Actors on the platform during development. If you are ready to make your Actor public, use a Git repository instead, as you will reap the benefits of using Git and others will be able to contribute to the project.
-> The `apify push` command should only really be used for quickly pushing and testing Actors on the platform during development. If you are ready to make your Actor public, use a Git repository instead, as you will reap the benefits of using Git and others will be able to contribute to the project.
+:::
## Deployed! {#deployed}
diff --git a/sources/academy/platform/deploying_your_code/docker_file.md b/sources/academy/platform/deploying_your_code/docker_file.md
index 2686e7872f..c7ae50d9d9 100644
--- a/sources/academy/platform/deploying_your_code/docker_file.md
+++ b/sources/academy/platform/deploying_your_code/docker_file.md
@@ -1,6 +1,6 @@
---
title: Creating Actor Dockerfile
-description: Understand how to write a Dockerfile (Docker image blueprint) for your project so that it can be run within a Docker container on the Apify platform.
+description: Learn to write a Dockerfile for your project so it can run in a Docker container on the Apify platform.
sidebar_position: 4
slug: /deploying-your-code/docker-file
---
@@ -8,19 +8,27 @@ slug: /deploying-your-code/docker-file
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-**Understand how to write a Dockerfile (Docker image blueprint) for your project so that it can be run within a Docker container on the Apify platform.**
+**Learn to write a Dockerfile for your project so it can run in a Docker container on the Apify platform.**
---
The **Dockerfile** is a file which gives the Apify platform (or Docker, more specifically) instructions on how to create an environment for your code to run in. Every Actor must have a Dockerfile, as Actors run in Docker containers.
-> Actors on the platform are always run in Docker containers; however, they can also be run in local Docker containers. This is not common practice though, as it requires more setup and a deeper understanding of Docker. For testing, it's best to run the Actor on the local OS (this requires you to have the underlying runtime installed, such as Node.js, Python, Rust, GO, etc).
+:::note Local testing
+
+Actors on the platform are always run in Docker containers, however, they can also be run in local Docker containers. This is not common practice though, as it requires more setup and a deeper understanding of Docker. For testing, it's best to run the Actor on the local OS (this requires you to have the underlying runtime installed, such as Node.js, Python, Rust, GO, etc).
+
+:::
## Base images {#base-images}
-If your project doesn’t already contain a Dockerfile, don’t worry! Apify offers [many base images](/sdk/js/docs/guides/docker-images) that are optimized for building and running Actors on the platform, which can be found on [Docker Hub](https://hub.docker.com/u/apify). When using a language for which Apify doesn't provide a base image, [Docker Hub](https://hub.docker.com/) provides a ton of free Docker images for most use-cases, upon which you can create your own images.
+If your project doesn't already contain a Dockerfile, don't worry! Apify offers [many base images](/sdk/js/docs/guides/docker-images) that are optimized for building and running Actors on the platform, which can be found on [Docker Hub](https://hub.docker.com/u/apify). When using a language for which Apify doesn't provide a base image, [Docker Hub](https://hub.docker.com/) provides a ton of free Docker images for most use-cases, upon which you can create your own images.
+
+:::tip DockerHub images
+
+You can see all of Apify's Docker images [on DockerHub](https://hub.docker.com/u/apify).
-> Tip: You can see all of Apify's Docker images [on DockerHub](https://hub.docker.com/u/apify).
+:::
At the base level, each Docker image contains a base operating system and usually also a programming language runtime (such as Node.js or Python). You can also find images with preinstalled libraries or install them yourself during the build step.
@@ -30,13 +38,21 @@ Once you find the base image you need, you can add it as the initial `FROM` stat
FROM apify/actor-node:16
```
-> For syntax highlighting in your Dockerfiles, download the [**Docker** VSCode extension](https://code.visualstudio.com/docs/containers/overview#_installation).
+:::tip VSCode extension
+
+For syntax highlighting in your Dockerfiles, download the [Docker VSCode extension](https://code.visualstudio.com/docs/containers/overview#_installation).
+
+:::
## Writing the file {#writing-the-file}
The rest of the Dockerfile is about copying the source code from the local filesystem into the container's filesystem, installing libraries, and setting the `RUN` command (which falls back to the parent image).
-> If you are not using a base image from Apify, then you should specify how to launch the source code of your Actor with the `CMD` instruction.
+:::info Custom images
+
+If you are not using a base image from Apify, then you should specify how to launch the source code of your Actor with the `CMD` instruction.
+
+:::
Here's the Dockerfile for our Node.js example project's Actor:
diff --git a/sources/academy/platform/deploying_your_code/index.md b/sources/academy/platform/deploying_your_code/index.md
index 9026ebc54a..bd67d39e27 100644
--- a/sources/academy/platform/deploying_your_code/index.md
+++ b/sources/academy/platform/deploying_your_code/index.md
@@ -9,17 +9,13 @@ slug: /deploying-your-code
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-# Deploying your code to Apify {#deploying}
-
**In this course learn how to take an existing project of yours and deploy it to the Apify platform as an Actor.**
---
-This section will discuss how to use your newfound knowledge of the Apify platform and Actors from the [**Getting started**](../getting_started/index.md) section to deploy your existing project's code to the Apify platform as an Actor.
+This section discusses how to use your newfound knowledge of the Apify platform and Actors from the [**Getting started**](../getting_started/index.md) section to deploy your existing project's code to the Apify platform as an Actor.
Any program running in a Docker container can become an Apify Actor.
-
-
Apify provides detailed guidance on how to deploy Node.js and Python programs as Actors, but apart from that you're not limited in what programming language you choose for your scraper.

@@ -30,12 +26,12 @@ Here are a few examples of Actors in other languages:
- [Go Actor](https://apify.com/jirimoravcik/go-actor-example)
- [Julia Actor](https://apify.com/jirimoravcik/julia-actor-example)
-## The "actorification" workflow {#workflow}
+## The "Actorization" workflow {#workflow}
Follow these four main steps to turn a piece of code into an Actor:
1. Handle [accepting inputs and writing outputs](./inputs_outputs.md).
-2. Create an [input schema](./input_schema.md) **(optional)**.
+2. Create an [input schema](./input_schema.md) _(optional)_.
3. Add a [Dockerfile](./docker_file.md).
4. [Deploy](./deploying.md) to the Apify platform!
@@ -73,10 +69,14 @@ print(add_all_numbers([1, 2, 3, 4])) # -> 10
-> For all lessons in this section, we'll have examples for both Node.js and Python so that you can follow along in either language.
+:::note Language examples
+
+For all lessons in this section, we'll have examples for both Node.js and Python so that you can follow along in either language.
+
+:::
-## Next up {#next}
+## Next up
[Next lesson](./inputs_outputs.md), we'll be learning how to accept input into our Actor as well as deliver output.
diff --git a/sources/academy/platform/deploying_your_code/input_schema.md b/sources/academy/platform/deploying_your_code/input_schema.md
index a8ec5e5436..82eeab6b30 100644
--- a/sources/academy/platform/deploying_your_code/input_schema.md
+++ b/sources/academy/platform/deploying_your_code/input_schema.md
@@ -9,9 +9,13 @@ slug: /deploying-your-code/input-schema
---
-Though writing an [input schema](/platform/actors/development/actor-definition/input-schema) for an Actor is not a required step, it is most definitely an ideal one. The Apify platform will read the **INPUT_SCHEMA.json** file within the root of your project and generate a user interface for entering input into your Actor, which makes it significantly easier for non-developers (and even developers) to configure and understand the inputs your Actor can receive. Because of this, we'll be writing an input schema for our example Actor.
+Though writing an [input schema](/platform/actors/development/actor-definition/input-schema) for an Actor is not a required step, it's definitely an ideal one. The Apify platform will read the `INPUT_SCHEMA.json` file within the root of your project and generate a user interface for entering input into your Actor, which makes it significantly easier for non-developers (and even developers) to configure and understand the inputs your Actor can receive. Because of this, we'll be writing an input schema for our example Actor.
-> Without an input schema, the users of our Actor will have to provide the input in JSON format, which can be problematic for those who are not familiar with JSON.
+:::note JSON requirement
+
+Without an input schema, the users of our Actor will have to provide the input in JSON format, which can be problematic for those who are not familiar with JSON.
+
+:::
## Schema title & description {#title-and-description}
@@ -100,7 +104,7 @@ Here is what the input schema we wrote will render on the platform:

-Later on, we'll be building more complex input schemas, as well as discussing how to write quality input schemas that allow the user to understand the Actor and not become overwhelmed.
+Later on, we'll be building more complex input schemas, as well as discussing how to write quality input schemas that allow the user to understand the Actor.
It's not expected to memorize all of the fields that properties can take or the different editor types available, which is why it's always good to reference the [input schema documentation](/platform/actors/development/actor-definition/input-schema) when writing a schema.
diff --git a/sources/academy/platform/deploying_your_code/inputs_outputs.md b/sources/academy/platform/deploying_your_code/inputs_outputs.md
index a41f8ab377..2f3d8c5467 100644
--- a/sources/academy/platform/deploying_your_code/inputs_outputs.md
+++ b/sources/academy/platform/deploying_your_code/inputs_outputs.md
@@ -1,17 +1,17 @@
---
title: Managing Actor inputs and outputs
-description: Learn to accept input into your Actor, do something with it, and then return output. Actors can be written in any language, so this concept is language agnostic.
+description: Learn to accept input into your Actor, process it, and return output. This concept applies to Actors in any language.
sidebar_position: 1
slug: /deploying-your-code/inputs-outputs
---
-**Learn to accept input into your Actor, do something with it, and then return output. Actors can be written in any language, so this concept is language agnostic.**
+**Learn to accept input into your Actor, process it, and return output. This concept applies to Actors in any language.**
---
Most of the time when you're creating a project, you are expecting some sort of input from which your software will run off. Oftentimes as well, you want to provide some sort of output once your software has completed running. Apify provides a convenient way to handle inputs and deliver outputs.
-An important thing to understand regarding inputs and outputs is that they are read/written differently depending on where the Actor is running:
+Understanding inputs and outputs is essential because they are read/written differently depending on where the Actor is running:
- If your Actor is running locally, the inputs/outputs are usually provided in the filesystem, and environment variables are injected either by you, the developer, or by the Apify CLI by running the project with the `apify run` command.
@@ -160,7 +160,11 @@ await Actor.exit();
Just as with the custom `get_input()` utility function, you can write a custom `set_output()` function as well if you cannot use the Apify SDK.
-> You can read and write your output anywhere; however, it is standard practice to use a folder named **storage**.
+:::note Storage location
+
+You can read and write your output anywhere; however, it is standard practice to use a folder named `storage`.
+
+:::
```py
# index.py
diff --git a/sources/academy/platform/deploying_your_code/output_schema.md b/sources/academy/platform/deploying_your_code/output_schema.md
index a18f7591a9..ed3c6156ee 100644
--- a/sources/academy/platform/deploying_your_code/output_schema.md
+++ b/sources/academy/platform/deploying_your_code/output_schema.md
@@ -160,7 +160,11 @@ const results = {
Great! Now that everything is set up, it's time to run the Actor and admire your Actor's brand new output tab.
-> Need some extra guidance? Visit the [dataset schema documentation](/platform/actors/development/actor-definition/dataset-schema) for more detailed information about how to implement this feature.
+:::tip Additional resources
+
+Visit the [dataset schema documentation](/platform/actors/development/actor-definition/dataset-schema) for more detailed information about how to implement this feature.
+
+:::
A few seconds after running the Actor, you should see its results displayed in the `Overview` table.
From a1be098302e137418344f193ebfb2f0a1e07aa53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 04:37:15 +0100
Subject: [PATCH 02/10] update getting started
---
.../platform/getting_started/actors.md | 6 +++-
.../platform/getting_started/apify_api.md | 14 ++++++++--
.../platform/getting_started/apify_client.md | 14 ++++++++--
.../getting_started/creating_actors.md | 28 ++++++++++++++++---
.../academy/platform/getting_started/index.md | 4 +--
.../getting_started/inputs_outputs.md | 14 ++++++++--
6 files changed, 64 insertions(+), 16 deletions(-)
diff --git a/sources/academy/platform/getting_started/actors.md b/sources/academy/platform/getting_started/actors.md
index f675edbaa6..caf3e476ce 100644
--- a/sources/academy/platform/getting_started/actors.md
+++ b/sources/academy/platform/getting_started/actors.md
@@ -17,7 +17,11 @@ When you deploy your script to the Apify platform, it is then called an **Actor*
Once an Actor has been pushed to the Apify platform, they can be shared to the world through the [Apify Store](https://apify.com/store), and even monetized after going public.
-> Though the majority of Actors that are currently on the Apify platform are scrapers, crawlers, or automation software, Actors are not limited to scraping. They can be any program running in a Docker container.
+:::note Beyond scraping
+
+Though the majority of Actors that are currently on the Apify platform are scrapers, crawlers, or automation software, Actors are not limited to scraping. They can be any program running in a Docker container.
+
+:::
## Actors on the Apify platform {#actors-on-platform}
diff --git a/sources/academy/platform/getting_started/apify_api.md b/sources/academy/platform/getting_started/apify_api.md
index 1ff4bfe678..f3dca71b96 100644
--- a/sources/academy/platform/getting_started/apify_api.md
+++ b/sources/academy/platform/getting_started/apify_api.md
@@ -27,7 +27,11 @@ You should see a long list of API endpoints that you can copy and paste elsewher
https://api.apify.com/v2/acts/YOUR_USERNAME~adding-actor/run-sync?token=YOUR_TOKEN
```
-> In this lesson, we'll only be focusing on this one endpoint, as it is the most popularly used one; however, don't let this limit your curiosity! Take a look at the other endpoints in the **API** window to learn about everything you can do to your Actor programmatically.
+:::note Single endpoint
+
+In this lesson, we'll only be focusing on this one endpoint, as it is the most popularly used one, however, don't let this limit your curiosity! Take a look at the other endpoints in the **API** window to learn about everything you can do to your Actor programmatically.
+
+:::
Now, let's move over to our favorite HTTP client (in this lesson we'll use [Insomnia](../../glossary/tools/insomnia.md) in order to prepare and send the request).
@@ -47,7 +51,11 @@ https://api.apify.com/v2/acts/YOUR_USERNAME~adding-actor/run-sync-get-dataset-it
Additional parameters can be passed to this endpoint. You can learn about them in our [API documentation](/api/v2/act-run-sync-get-dataset-items-post)
-> Network components can record visited URLs, so it's more secure to send the token as a HTTP header, not as a parameter. The header should look like `Authorization: Bearer YOUR_TOKEN`. Popular HTTP clients, such as [Postman](../../glossary/tools/postman.md) or [Insomnia](../../glossary/tools/insomnia.md), provide a convenient way to configure the Authorization header for all your API requests.
+:::caution Token security
+
+Network components can record visited URLs, so it's more secure to send the token as a HTTP header, not as a parameter. The header should look like `Authorization: Bearer YOUR_TOKEN`. Popular HTTP clients, such as [Postman](../../glossary/tools/postman.md) or [Insomnia](../../glossary/tools/insomnia.md), provide a convenient way to configure the Authorization header for all your API requests.
+
+:::
## Sending the request {#sending-the-request}
@@ -65,7 +73,7 @@ And there it is! The Actor was run with our inputs of **num1** and **num2**, the
## Apify API's many features {#api-many-features}
-What we've done in this lesson only scratches the surface of what the Apify API can do. Right from Insomnia, or from any HTTP client, you can [manage datasets](/api/v2/storage-datasets) and [key-value stores](/api/v2/storage-key-value-stores), [add to request queues]/api/v2/storage-request-queues), [update Actors](/api/v2/storage-request-queues-requests), and much more! Basically, whatever you can do on the platform's web interface, you also do through the API.
+What we've done in this lesson only scratches the surface of what the Apify API can do. Right from Insomnia, or from any HTTP client, you can manage [datasets](/api/v2/storage-datasets) and [key-value stores](/api/v2/storage-key-value-stores), add to [request queues](/api/v2/storage-request-queues), [update Actors](/api/v2/act-put), and much more! Basically, whatever you can do on the platform's web interface, you also do through the API.
## Next up {#next}
diff --git a/sources/academy/platform/getting_started/apify_client.md b/sources/academy/platform/getting_started/apify_client.md
index a5ba1951a7..58ca2c80f5 100644
--- a/sources/academy/platform/getting_started/apify_client.md
+++ b/sources/academy/platform/getting_started/apify_client.md
@@ -38,7 +38,7 @@ In Python, you can install it from PyPI with this command:
pip install apify-client
```
-After installing the package, let's make a file named **client** and import the Apify client like so:
+After installing the package, let's make a file named `client.js` (or `client.py` for Python) and import the Apify client like so:
@@ -86,7 +86,11 @@ client = ApifyClient(token='YOUR_TOKEN')
-> If you are planning on publishing your code to a public GitHub/Gitlab repository or anywhere else online, be sure to set your API token as en environment variable, and never hardcode it directly into your script.
+:::caution Environment variables
+
+If you are planning on publishing your code to a public GitHub/Gitlab repository or anywhere else online, be sure to set your API token as en environment variable, and never hardcode it directly into your script.
+
+:::
Now that we've got our instance, we can point to an Actor using the [`client.actor()`](/api/client/js/reference/class/ApifyClient#actor) function, then call the Actor with some input with the [`.call()`](/api/client/js/reference/class/ApifyClient#actor) function - the first parameter of which is the input for the Actor.
@@ -114,7 +118,11 @@ run = client.actor('YOUR_USERNAME/adding-actor').call(run_input={
-> Learn more about the `.call()` function in our [API documentation](/api/client/js/reference/class/ApifyClient#actor).
+:::info Learn more
+
+Learn more about the `.call()` function in our [API documentation](/api/client/js/reference/class/ApifyClient#actor).
+
+:::
## Downloading dataset items {#downloading-dataset-items}
diff --git a/sources/academy/platform/getting_started/creating_actors.md b/sources/academy/platform/getting_started/creating_actors.md
index 354a3ffc2c..a65f440302 100644
--- a/sources/academy/platform/getting_started/creating_actors.md
+++ b/sources/academy/platform/getting_started/creating_actors.md
@@ -40,7 +40,11 @@ You can also push your existing code from your local machine using [Apify CLI](/
Python, JavaScript, and TypeScript have several template options that you can use.
-> You can select one from the list on this page or you can browse all the templates in the template library by clicking on the **View all templates** button in the right corner.
+:::tip Template library
+
+You can select one from the list on this page or you can browse all the templates in the template library by clicking on the **View all templates** button in the right corner.
+
+:::
For example, let's choose the **Start with JavaScript** template and click on the template card.
@@ -54,7 +58,11 @@ You will end up on a template detail page where you can see all the important in
By clicking **Use this template** button you will create the Actor in Apify Console and you will be moved to the **Code** tab with the [Web IDE](/platform/actors/development/quick-start/web-ide) where you can see the code of the template and start editing it.
-> The Web IDE is a great tool for developing your Actor directly in Apify Console without the need to install or use any other software.
+:::tip Web IDE
+
+The Web IDE is a great tool for developing your Actor directly in Apify Console without the need to install or use any other software.
+
+:::

@@ -62,7 +70,11 @@ By clicking **Use this template** button you will create the Actor in Apify Cons
If you want to use the template locally, you can again use our [Apify CLI](/cli) to download the template to your local machine.
-> Creating an Actor from a template locally is a great option if you want to develop your code using your local environment and IDE and then push the final solution back to the Apify Console.
+:::tip Local development
+
+Creating an Actor from a template locally is a great option if you want to develop your code using your local environment and IDE and then push the final solution back to the Apify Console.
+
+:::
When you click on the **Use locally** button, you'll be presented with instructions on how to create an Actor from this template in your local environment.
@@ -133,7 +145,15 @@ The Actor takes the `url` from the input and then:
The extracted data is stored in the [Dataset](/platform/storage/dataset) where you can preview it and download it. We'll show how to do that later in [Run the Actor](#run-the-actor) section.
-> Feel free to play around with the code and add some more features to it. For example, you can extract all the links from the page or extract all the images or completely change the logic of this template. Keep in mind that this template uses [input schema](/academy/deploying-your-code/input-schema) defined in the `.actor/input_schema.json` file and linked to the `.actor/actor.json`. If you want to change the input schema, you need to change it in those files as well. Learn more about the Actor input and output [in the next page](/academy/getting-started/inputs-outputs).
+:::tip Customize template
+
+Feel free to play around with the code and add some more features to it. For example, you can extract all the links from the page or extract all the images or completely change the logic of this template.
+
+Keep in mind that this template uses [input schema](/academy/deploying-your-code/input-schema) defined in the `.actor/input_schema.json` file and linked to the `.actor/actor.json`. If you want to change the input schema, you need to change it in those files as well.
+
+Learn more about the Actor input and output [in the next page](/academy/getting-started/inputs-outputs).
+
+:::
## Build the Actor 🧱 {#build-an-actor}
diff --git a/sources/academy/platform/getting_started/index.md b/sources/academy/platform/getting_started/index.md
index 7a97924a26..045f6e4848 100644
--- a/sources/academy/platform/getting_started/index.md
+++ b/sources/academy/platform/getting_started/index.md
@@ -20,8 +20,8 @@ Your gateway to the Apify platform is your Apify account. The great thing about
## Getting to know the platform {#getting-to-know-the-platform}
-Now that you have an account, you have access to the [Apify Console](https://console.apify.com?asrc=developers_portal), which is a wonderful place where you utilize all of the features the platform has to offer, as well as manage and test your own projects.
+Now that you have an account, you have access to [Apify Console](https://console.apify.com?asrc=developers_portal), which is a wonderful place where you can use all of the features the platform has to offer, as well as manage and test your own projects.
## Next up {#next}
-In our next lesson, we'll learn about something super exciting - **Actors**. Actors are the living and breathing core of the Apify platform and are an extremely powerful concept. What are you waiting for? Let's jump [right into the next lesson](./actors.md)!
+In our next lesson, we'll learn about something exciting - _Actors_. Actors are the living and breathing core of the Apify platform and are an extremely powerful concept. Let's jump [right into the next lesson](./actors.md)!
diff --git a/sources/academy/platform/getting_started/inputs_outputs.md b/sources/academy/platform/getting_started/inputs_outputs.md
index 1e3cf84262..1b942658df 100644
--- a/sources/academy/platform/getting_started/inputs_outputs.md
+++ b/sources/academy/platform/getting_started/inputs_outputs.md
@@ -36,9 +36,13 @@ await Actor.pushData({ solution });
await Actor.exit();
```
-Then, replace everything in **INPUT_SCHEMA.json** with this:
+Then, replace everything in `INPUT_SCHEMA.json` with this:
-> This step isn't necessary, as the Actor will still be able to take input in JSON format without it; however, we are providing the content for this Actor's input schema in this lesson, as it will give the Apify platform a blueprint off of which it can generate a nice UI for your inputs, as well as validate their values.
+:::note Optional step
+
+This step isn't necessary, as the Actor will still be able to take input in JSON format without it, however, we are providing the content for this Actor's input schema in this lesson, as it will give the Apify platform a blueprint off of which it can generate a nice UI for your inputs, as well as validate their values.
+
+:::
```json
{
@@ -63,7 +67,11 @@ Then, replace everything in **INPUT_SCHEMA.json** with this:
}
```
-> If you're interested in learning more about how the code works, and what the **INPUT_SCHEMA.json** means, read about [inputs](/sdk/js/docs/examples/accept-user-input) and [adding data to a dataset](/sdk/js/docs/examples/add-data-to-dataset) in the Apify SDK documentation, and refer to the [input schema docs](/platform/actors/development/actor-definition/input-schema/specification/v1#integer).
+:::tip Learn more
+
+If you're interested in learning more about how the code works, and what the `INPUT_SCHEMA.json` means, read about [inputs](/sdk/js/docs/examples/accept-user-input) and [adding data to a dataset](/sdk/js/docs/examples/add-data-to-dataset) in the Apify SDK documentation, and refer to the [input schema docs](/platform/actors/development/actor-definition/input-schema/specification/v1#integer).
+
+:::
Finally, **Save** and **Build** the Actor just as you did in the previous lesson.
From ddc391eb272fb40e0e355e86d2c0987ca1eec17a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 04:41:24 +0100
Subject: [PATCH 03/10] updates to foratting
updates to formatting
remove H1's
remove unnecessary hard-coded anchors
---
sources/academy/platform/getting_started/actors.md | 4 ++--
.../academy/platform/getting_started/apify_api.md | 11 ++++-------
.../platform/getting_started/apify_client.md | 14 ++++++--------
.../platform/getting_started/creating_actors.md | 6 +++---
sources/academy/platform/getting_started/index.md | 4 +---
5 files changed, 16 insertions(+), 23 deletions(-)
diff --git a/sources/academy/platform/getting_started/actors.md b/sources/academy/platform/getting_started/actors.md
index caf3e476ce..2f8ebfc87c 100644
--- a/sources/academy/platform/getting_started/actors.md
+++ b/sources/academy/platform/getting_started/actors.md
@@ -25,9 +25,9 @@ Though the majority of Actors that are currently on the Apify platform are scrap
## Actors on the Apify platform {#actors-on-platform}
-For a super quick and dirty understanding of what a published Actor looks like, and how it works, let's run an SEO audit of **apify.com** using the [SEO audit Actor](https://apify.com/misceres/seo-audit-tool).
+For a super quick and dirty understanding of what a published Actor looks like, and how it works, let's run an SEO audit of _apify.com_ using the [SEO audit Actor](https://apify.com/misceres/seo-audit-tool).
-On the front page of the Actor, click the green **Try for free** button. If you're logged into your Apify account which you created during the [**Getting started**](./index.md) lesson, you'll be taken to the Apify Console and greeted with a page that looks like this:
+On the front page of the Actor, click the green **Try for free** button. If you're logged into your Apify account which you created during the [Getting started](./index.md) lesson, you'll be taken to the Apify Console and greeted with a page that looks like this:

diff --git a/sources/academy/platform/getting_started/apify_api.md b/sources/academy/platform/getting_started/apify_api.md
index f3dca71b96..e1da452c44 100644
--- a/sources/academy/platform/getting_started/apify_api.md
+++ b/sources/academy/platform/getting_started/apify_api.md
@@ -5,8 +5,6 @@ sidebar_position: 4
slug: /getting-started/apify-api
---
-# The Apify API {#the-apify-api}
-
**Learn how to use the Apify API to programmatically call your Actors, retrieve data stored on the platform, view Actor logs, and more!**
---
@@ -15,7 +13,7 @@ slug: /getting-started/apify-api
In this lesson, we'll be learning how to use the Apify API to call an Actor and view its results. We'll be using the Actor we created in the previous lesson, so if you haven't already gotten that one set up, go ahead do that before moving forward if you'd like to follow along.
-## Finding your endpoint {#finding-your-endpoint}
+## Finding your endpoint
Within one of your Actors on the [Apify Console](https://console.apify.com?asrc=developers_portal) (we'll use the **adding-actor** from the previous lesson), click on the **API** button in the top right-hand corner:
@@ -35,13 +33,12 @@ In this lesson, we'll only be focusing on this one endpoint, as it is the most p
Now, let's move over to our favorite HTTP client (in this lesson we'll use [Insomnia](../../glossary/tools/insomnia.md) in order to prepare and send the request).
-## Providing input {#providing-input}
-
+## Providing input
Our **adding-actor** takes in two input values (`num1` and `num2`). When using the Actor on the platform, provide these fields either through the UI generated by the **INPUT_SCHEMA.json**, or directly in JSON format. When providing input when making an API call to run an Actor, the input must be provided in the **body** of the POST request as a JSON object.

-## Parameters {#parameters}
+## Parameters
Let's say we want to run our **adding-actor** via API and view its results in CSV format at the end. We'll achieve this by passing the **format** parameter with a value of **csv** to change the output format:
@@ -57,7 +54,7 @@ Network components can record visited URLs, so it's more secure to send the toke
:::
-## Sending the request {#sending-the-request}
+## Sending the request
If you're not using an HTTP client, you can send the request through your terminal with this command:
diff --git a/sources/academy/platform/getting_started/apify_client.md b/sources/academy/platform/getting_started/apify_client.md
index 58ca2c80f5..4cc4b4e6d2 100644
--- a/sources/academy/platform/getting_started/apify_client.md
+++ b/sources/academy/platform/getting_started/apify_client.md
@@ -8,8 +8,6 @@ slug: /getting-started/apify-client
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
-# Apify client {#apify-client}
-
**Interact with the Apify API in your code by using the apify-client package, which is available for both JavaScript and Python.**
---
@@ -18,13 +16,13 @@ Now that you've gotten your toes wet with interacting with the Apify API through
This lesson will provide code examples for both Node.js and Python, so regardless of the language you are using, you can follow along!
-## Examples {#examples}
+## Examples
You can access `apify-client` examples in the Console Actor detail page. Click the **API** button and then the **API Client** dropdown button.

-## Installing and importing {#installing-and-importing}
+## Installing and importing
If you are going to use the client in Node.js, use this command within one of your projects to install the package through npm:
@@ -60,7 +58,7 @@ from apify_client import ApifyClient
-## Running an Actor {#running-an-actor}
+## Running an Actor
In the last lesson, we ran the **adding-actor** and retrieved its dataset items. That's exactly what we're going to do now; however, by using the Apify client instead.
@@ -124,7 +122,7 @@ Learn more about the `.call()` function in our [API documentation](/api/client/j
:::
-## Downloading dataset items {#downloading-dataset-items}
+## Downloading dataset items
Once an Actor's run has completed, it will return a **run info** object that looks something like this:
@@ -224,7 +222,7 @@ print(items)
-## Updating an Actor {#updating-actor}
+## Updating an Actor
If you check the **Settings** tab within your **adding-actor**, you'll notice that the default timeout being set to the Actor is **360 seconds**. This is a bit overkill considering the fact that the Actor is only adding two numbers together - the run should never take more than 20 seconds (even this is a generous number). The default memory being allocated to the Actor is **256 MB**, which is reasonable for our purposes.
@@ -280,7 +278,7 @@ After running the code, go back to the **Settings** page of **adding-actor**. If

-## Overview {#overview}
+## Overview
You can do so much more with the Apify client than running Actors, updating Actors, and downloading dataset items. The purpose of this lesson was to get you comfortable using the client in your own projects, as it's the absolute best developer tool for integrating the Apify platform with an external system.
diff --git a/sources/academy/platform/getting_started/creating_actors.md b/sources/academy/platform/getting_started/creating_actors.md
index a65f440302..a1c6505b43 100644
--- a/sources/academy/platform/getting_started/creating_actors.md
+++ b/sources/academy/platform/getting_started/creating_actors.md
@@ -11,7 +11,7 @@ slug: /getting-started/creating-actors
You can create an Actor in several ways. You can create one from your own source code hosted in a Git repository or in your local machine, for example. But in this tutorial, we'll focus on the easiest method: selecting an Actor code template. We don't need to install any special software, and everything can be done directly in Apify Console using an Apify account.
-## Choose the source {#choose-the-source}
+## Choose the source
Once you're in Apify Console, go to [Actors](https://console.apify.com/actors), and click on the **Develop new** button in the top right-hand corner.
@@ -155,7 +155,7 @@ Learn more about the Actor input and output [in the next page](/academy/getting-
:::
-## Build the Actor 🧱 {#build-an-actor}
+## Build the Actor
In order to run the Actor, you need to [build](/platform/actors/development/builds-and-runs/builds) it first. Click on the **Build** button at the bottom of the page or **Build now** button right under the code editor.
@@ -165,7 +165,7 @@ After you've clicked the **Build** button, it'll take around 5–10 seconds to c

-## Fill the input {#fill-input}
+## Fill the input
And now we are ready to run the Actor. But before we do that, let's give the Actor some input by going to the `Input` tab.
diff --git a/sources/academy/platform/getting_started/index.md b/sources/academy/platform/getting_started/index.md
index 045f6e4848..ab8768919d 100644
--- a/sources/academy/platform/getting_started/index.md
+++ b/sources/academy/platform/getting_started/index.md
@@ -6,8 +6,6 @@ category: apify platform
slug: /getting-started
---
-# Getting started {#getting-started}
-
**Get started with the Apify platform by creating an account and learning about the Apify Console, which is where all Apify Actors are born!**
---
@@ -18,7 +16,7 @@ Your gateway to the Apify platform is your Apify account. The great thing about
2. Check your email, you should have a verification email with a link. Click it!
3. Done! 👍
-## Getting to know the platform {#getting-to-know-the-platform}
+## Getting to know the platform
Now that you have an account, you have access to [Apify Console](https://console.apify.com?asrc=developers_portal), which is a wonderful place where you can use all of the features the platform has to offer, as well as manage and test your own projects.
From 0119190a3959d4f0605e66e4cb7fdd0dd44f5409 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 04:46:14 +0100
Subject: [PATCH 04/10] remove actor marketing playbook index
remove index for actor marketing playbook
add redirect for removed page
remove H1
---
nginx.conf | 3 +
sources/academy/platform/apify_platform.md | 2 -
.../platform/get_most_of_actors/index.md | 179 ------------------
3 files changed, 3 insertions(+), 181 deletions(-)
delete mode 100644 sources/academy/platform/get_most_of_actors/index.md
diff --git a/nginx.conf b/nginx.conf
index 7243b22649..8e265af7f4 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -646,6 +646,9 @@ server {
# Actor marketing playbook addition
rewrite ^/academy/get-most-of-actors$ /academy/actor-marketing-playbook permanent;
+ # Actor marketing playbook index removal
+ rewrite ^/academy/actor-marketing-playbook$ /academy/actor-marketing-playbook/promote-your-actor/checklist permanent;
+
# Misc
rewrite ^/platform/integrations/llama$ /platform/integrations/llama-index permanent;
}
diff --git a/sources/academy/platform/apify_platform.md b/sources/academy/platform/apify_platform.md
index 93aa7c7740..afaf819dbe 100644
--- a/sources/academy/platform/apify_platform.md
+++ b/sources/academy/platform/apify_platform.md
@@ -6,8 +6,6 @@ category: apify platform
slug: /apify-platform
---
-# Introduction to the Apify platform {#about-the-platform}
-
**Learn all about the Apify platform, all of the tools it offers, and how it can improve your overall development experience.**
---
diff --git a/sources/academy/platform/get_most_of_actors/index.md b/sources/academy/platform/get_most_of_actors/index.md
deleted file mode 100644
index bbc58218a6..0000000000
--- a/sources/academy/platform/get_most_of_actors/index.md
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Actor marketing playbook
-description: Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.
-sidebar_position: 10
-category: apify platform
-slug: /actor-marketing-playbook
-unlisted: true
----
-
-**Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.**
-
----
-
-import Card from '@site/src/components/Card';
-import CardGrid from '@site/src/components/CardGrid';
-
-[Apify Store](https://apify.com/store) is a marketplace featuring thousands of ready-made automation tools called Actors. As a developer, you can publish your own Actors and generate revenue through our [monetization program](https://apify.com/partners/actor-developers).
-
-To help you succeed, we've created a comprehensive Actor marketing playbook. You'll learn how to:
-
-- Optimize your Actor's visibility on Apify Store
-- Create compelling descriptions and documentation
-- Build your developer brand
-- Promote your work to potential customers
-- Analyze performance metrics
-- Engage with the Apify community
-
-## Apify Store basics
-
-
-
-
-
-
-
-
-## Actor basics
-
-
-
-
-
-
-
-
-
-## Promoting your Actor
-
-
-
-
-
-
-
-
-
-
-
-## Interacting with users
-
-
-
-
-
-
-
-## Product optimization
-
-
-
-
-
-
-Ready to grow your presence on the Apify platform? Check out our guide to [publishing your first Actor](/platform/actors/publishing).
From 6914e92f33dda11655a24b9e93ae4bd4ccd629f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 05:08:26 +0100
Subject: [PATCH 05/10] bring back actor marketing playbook index.md
---
.../platform/get_most_of_actors/index.md | 173 ++++++++++++++++++
1 file changed, 173 insertions(+)
create mode 100644 sources/academy/platform/get_most_of_actors/index.md
diff --git a/sources/academy/platform/get_most_of_actors/index.md b/sources/academy/platform/get_most_of_actors/index.md
new file mode 100644
index 0000000000..79d1f4ff1e
--- /dev/null
+++ b/sources/academy/platform/get_most_of_actors/index.md
@@ -0,0 +1,173 @@
+---
+title: Actor marketing playbook
+description: Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.
+sidebar_position: 10
+category: apify platform
+slug: /actor-marketing-playbook
+unlisted: true
+---
+
+**Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.**
+
+---
+
+import Card from '@site/src/components/Card';
+import CardGrid from '@site/src/components/CardGrid';
+
+[Apify Store](https://apify.com/store) is a marketplace featuring thousands of ready-made automation tools called Actors. As a developer, you can publish your own Actors and generate revenue through our [monetization program](https://apify.com/partners/actor-developers).
+
+To help you succeed, we've created a comprehensive Actor marketing playbook. You'll learn how to:
+
+- Optimize your Actor's visibility on Apify Store
+- Create compelling descriptions and documentation
+- Build your developer brand
+- Promote your work to potential customers
+- Analyze performance metrics
+- Engage with the Apify community
+
+## Apify Store basics
+
+
+
+
+
+
+
+## Actor basics
+
+
+
+
+
+
+
+
+
+## Promoting your Actor
+
+
+
+
+
+
+
+
+
+
+
+## Interacting with users
+
+
+
+
+
+
+
+## Product optimization
+
+
+
+
+
+
+Ready to grow your presence on the Apify platform? Check out our guide to [publishing your first Actor](/platform/actors/publishing).
From b568763e76c56a4a1ed8e83d50ccb6aed87e5337 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 05:10:59 +0100
Subject: [PATCH 06/10] fix mdlint
---
sources/academy/platform/getting_started/apify_api.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/sources/academy/platform/getting_started/apify_api.md b/sources/academy/platform/getting_started/apify_api.md
index e1da452c44..ca5a6a2350 100644
--- a/sources/academy/platform/getting_started/apify_api.md
+++ b/sources/academy/platform/getting_started/apify_api.md
@@ -34,6 +34,7 @@ In this lesson, we'll only be focusing on this one endpoint, as it is the most p
Now, let's move over to our favorite HTTP client (in this lesson we'll use [Insomnia](../../glossary/tools/insomnia.md) in order to prepare and send the request).
## Providing input
+
Our **adding-actor** takes in two input values (`num1` and `num2`). When using the Actor on the platform, provide these fields either through the UI generated by the **INPUT_SCHEMA.json**, or directly in JSON format. When providing input when making an API call to run an Actor, the input must be provided in the **body** of the POST request as a JSON object.

From f736bf024bc42a6e6bc465ba532b787856a1ce18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 05:21:49 +0100
Subject: [PATCH 07/10] remove actor marketing playbook index (again)
---
.../platform/get_most_of_actors/index.md | 173 ------------------
1 file changed, 173 deletions(-)
delete mode 100644 sources/academy/platform/get_most_of_actors/index.md
diff --git a/sources/academy/platform/get_most_of_actors/index.md b/sources/academy/platform/get_most_of_actors/index.md
deleted file mode 100644
index 79d1f4ff1e..0000000000
--- a/sources/academy/platform/get_most_of_actors/index.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: Actor marketing playbook
-description: Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.
-sidebar_position: 10
-category: apify platform
-slug: /actor-marketing-playbook
-unlisted: true
----
-
-**Learn how to optimize and monetize your Actors on Apify Store by sharing them with other platform users.**
-
----
-
-import Card from '@site/src/components/Card';
-import CardGrid from '@site/src/components/CardGrid';
-
-[Apify Store](https://apify.com/store) is a marketplace featuring thousands of ready-made automation tools called Actors. As a developer, you can publish your own Actors and generate revenue through our [monetization program](https://apify.com/partners/actor-developers).
-
-To help you succeed, we've created a comprehensive Actor marketing playbook. You'll learn how to:
-
-- Optimize your Actor's visibility on Apify Store
-- Create compelling descriptions and documentation
-- Build your developer brand
-- Promote your work to potential customers
-- Analyze performance metrics
-- Engage with the Apify community
-
-## Apify Store basics
-
-
-
-
-
-
-
-## Actor basics
-
-
-
-
-
-
-
-
-
-## Promoting your Actor
-
-
-
-
-
-
-
-
-
-
-
-## Interacting with users
-
-
-
-
-
-
-
-## Product optimization
-
-
-
-
-
-
-Ready to grow your presence on the Apify platform? Check out our guide to [publishing your first Actor](/platform/actors/publishing).
From 3e921a65fdb4bba095c29c2003795c73374f0553 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 05:30:34 +0100
Subject: [PATCH 08/10] fix broken links
---
.../build-and-publish/how-to-build/actorization_playbook.mdx | 2 +-
sources/platform/actors/publishing/monetize/index.mdx | 2 +-
sources/platform/actors/running/store.md | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx b/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx
index 270b05ebc5..2d01a9aee6 100644
--- a/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx
+++ b/sources/academy/build-and-publish/how-to-build/actorization_playbook.mdx
@@ -135,4 +135,4 @@ Deployment to Apify platform can be done easily via `apify push` command of [Api
### 6. Publish and monetize
-For details on publishing the Actor in [Apify Store](https://apify.com/store) see the [Publishing and monetization](/platform/actors/publishing). You can also follow our guide on [How to create an Actor README](/academy/actor-marketing-playbook/actor-basics/how-to-create-an-actor-readme) and [Actor marketing playbook](/academy/actor-marketing-playbook).
+For details on publishing the Actor in [Apify Store](https://apify.com/store) see the [Publishing and monetization](/platform/actors/publishing). You can also follow our guide on [How to create an Actor README](/academy/actor-marketing-playbook/actor-basics/how-to-create-an-actor-readme) and [Marketing checklist](/academy/actor-marketing-playbook/promote-your-actor/checklist).
diff --git a/sources/platform/actors/publishing/monetize/index.mdx b/sources/platform/actors/publishing/monetize/index.mdx
index 2abadeeb45..1f540db993 100644
--- a/sources/platform/actors/publishing/monetize/index.mdx
+++ b/sources/platform/actors/publishing/monetize/index.mdx
@@ -126,5 +126,5 @@ Create search-engine-optimized descriptions and README files to improve search e
Remember to tag Apify in your social media posts for additional exposure. Effective promotion can significantly impact your Actor's success, differentiating between those with many paid users and those with few to none.
-Learn more about promoting your Actor in the [Apify's marketing playbook](/academy/actor-marketing-playbook).
+Learn more about promoting your Actor with [Apify's marketing checklist](academy/actor-marketing-playbook/promote-your-actor/checklist).
diff --git a/sources/platform/actors/running/store.md b/sources/platform/actors/running/store.md
index 4b4b47f0ff..0b0a36eb1f 100644
--- a/sources/platform/actors/running/store.md
+++ b/sources/platform/actors/running/store.md
@@ -14,7 +14,7 @@ toc_max_heading_level: 4
:::info Publishing and monetizing Actors
-Anyone is welcome to [publish Actors](/platform/actors/publishing) in the store, and you can even [monetize your Actors](/platform/actors/publishing/monetize). For more information about how to monetize your Actor, best practices, SEO, and promotion tips and tricks, head over to the [Getting the most of your public Actors in Apify Store](/academy/actor-marketing-playbook) section of the Apify Developers Academy.
+Anyone is welcome to [publish Actors](/platform/actors/publishing) in the store, and you can even [monetize your Actors](/platform/actors/publishing/monetize). For more information about how to monetize your Actor, best practices, SEO, and promotion tips and tricks, head over to the [Marketing checklist](/academy/actor-marketing-playbook/promote-your-actor/checklist) section of the Apify Developers Academy.
:::
From e50c772cb21465854a93c431bbe7f7c7b267d424 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Mon, 3 Nov 2025 05:34:04 +0100
Subject: [PATCH 09/10] add missing slash to link
---
sources/platform/actors/publishing/monetize/index.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sources/platform/actors/publishing/monetize/index.mdx b/sources/platform/actors/publishing/monetize/index.mdx
index 1f540db993..e7067e32a5 100644
--- a/sources/platform/actors/publishing/monetize/index.mdx
+++ b/sources/platform/actors/publishing/monetize/index.mdx
@@ -126,5 +126,5 @@ Create search-engine-optimized descriptions and README files to improve search e
Remember to tag Apify in your social media posts for additional exposure. Effective promotion can significantly impact your Actor's success, differentiating between those with many paid users and those with few to none.
-Learn more about promoting your Actor with [Apify's marketing checklist](academy/actor-marketing-playbook/promote-your-actor/checklist).
+Learn more about promoting your Actor with [Apify's marketing checklist](/academy/actor-marketing-playbook/promote-your-actor/checklist).
From bd70f477909403f98b7e6ed417693d964b9ba0bd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Olender?=
<92638966+TC-MO@users.noreply.github.com>
Date: Tue, 4 Nov 2025 15:40:48 +0100
Subject: [PATCH 10/10] fix redirect issues
---
nginx.conf | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/nginx.conf b/nginx.conf
index 8e265af7f4..02f67b612a 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -643,10 +643,8 @@ server {
rewrite ^/api/v2-old(.*)$ /api/v2$1 permanent;
rewrite ^/api/v2-redoc(.*)$ /api/v2$1 permanent;
- # Actor marketing playbook addition
- rewrite ^/academy/get-most-of-actors$ /academy/actor-marketing-playbook permanent;
-
- # Actor marketing playbook index removal
+ # Actor marketing playbook redirects (index page removed)
+ rewrite ^/academy/get-most-of-actors$ /academy/actor-marketing-playbook/promote-your-actor/checklist permanent;
rewrite ^/academy/actor-marketing-playbook$ /academy/actor-marketing-playbook/promote-your-actor/checklist permanent;
# Misc