diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a28efac254..c987ad81f8 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -138,14 +138,14 @@ jobs: assert_no_redirect "http://localhost:8080" --request-target '/\evil.com/' assert_no_redirect "http://localhost:8080" --request-target '///\evil.com/' # Normal trailing-slash redirect must still work - assert_status "http://localhost:8080/platform/proxy/usage/" "302" + assert_status "http://localhost:8080/actors/proxy/usage/" "302" echo "đŸ§Ș Checking Nginx responses... (apify-docs)" assert_header "http://localhost:8080/" "Content-Type" "text/html" assert_header "http://localhost:8080/" "Content-Type" "text/markdown" -H "Accept: text/markdown" - assert_header "http://localhost:8080/platform/proxy/usage" "Content-Type" "text/html" - assert_header "http://localhost:8080/platform/proxy/usage.md" "Content-Type" "text/markdown" - assert_header "http://localhost:8080/platform/proxy/usage" "Content-Type" "text/markdown" -H "Accept: text/markdown" + assert_header "http://localhost:8080/actors/proxy/usage" "Content-Type" "text/html" + assert_header "http://localhost:8080/actors/proxy/usage.md" "Content-Type" "text/markdown" + assert_header "http://localhost:8080/actors/proxy/usage" "Content-Type" "text/markdown" -H "Accept: text/markdown" assert_header "http://localhost:8080/img/docs-og.png" "Content-Type" "image/png" assert_header "http://localhost:8080/img/javascript-40x40.svg" "Content-Type" "image/svg" assert_header "http://localhost:8080/llms.txt" "Content-Type" "text/markdown" @@ -172,7 +172,7 @@ jobs: assert_html_md_alternate "http://localhost:8080/api/v2/dataset-get" "https://docs.apify.com/api/v2/dataset-get.md" assert_html_md_alternate "http://localhost:8080/academy/tutorials" "https://docs.apify.com/academy/tutorials.md" # Sanity check: a regular (non-excluded) page also has the alternate. - assert_html_md_alternate "http://localhost:8080/platform/proxy/usage" "https://docs.apify.com/platform/proxy/usage.md" + assert_html_md_alternate "http://localhost:8080/actors/proxy/usage" "https://docs.apify.com/actors/proxy/usage.md" echo "đŸ§Ș Checking Nginx responses... (apify-sdk-js)" assert_final_content_type "http://localhost:8080/sdk/js" "text/html" diff --git a/apify-docs-theme/src/config.js b/apify-docs-theme/src/config.js index 073b2e547d..755d4e4200 100644 --- a/apify-docs-theme/src/config.js +++ b/apify-docs-theme/src/config.js @@ -19,80 +19,92 @@ const themeConfig = { target: '_self', }, items: [ + // PRODUCT (left) { - label: 'Academy', - href: `${absoluteUrl}/academy`, - activeBasePath: 'academy', + label: 'Get started', + href: `${absoluteUrl}/get-started`, + activeBasePath: 'get-started', position: 'left', target: '_self', rel: 'dofollow', }, { - label: 'Platform', - href: `${absoluteUrl}/platform`, - className: 'navbar__active', - activeBasePath: 'platform', + label: 'Actors', + href: `${absoluteUrl}/actors`, + activeBasePath: 'actors', position: 'left', target: '_self', rel: 'dofollow', }, { - label: 'API', - type: 'dropdown', - to: `${absoluteUrl}/api`, + label: 'Integrations', + href: `${absoluteUrl}/integrations`, + activeBasePath: 'integrations', + position: 'left', + target: '_self', + rel: 'dofollow', + }, + { + label: 'Account', + href: `${absoluteUrl}/account`, + activeBasePath: 'account', + position: 'left', target: '_self', rel: 'dofollow', + }, + { + label: 'APIs & SDKs', + type: 'dropdown', + to: `${absoluteUrl}/api/v2`, activeBasePath: 'api', position: 'left', + target: '_self', + rel: 'dofollow', items: [ { - label: 'Reference', + label: 'API Reference', href: `${absoluteUrl}/api/v2`, target: '_self', rel: 'dofollow', }, { - label: 'Client for JavaScript', - href: `${absoluteUrl}/api/client/js/docs`, + label: 'SDK for JavaScript', + href: `${absoluteUrl}/sdk/js/docs/overview`, target: '_self', rel: 'dofollow', }, { - label: 'Client for Python', - href: `${absoluteUrl}/api/client/python/docs`, + label: 'SDK for Python', + href: `${absoluteUrl}/sdk/python/docs/overview`, target: '_self', rel: 'dofollow', }, - ], - }, - { - label: 'SDK', - type: 'dropdown', - to: `${absoluteUrl}/sdk`, - activeBasePath: 'sdk', - position: 'left', - target: '_self', - rel: 'dofollow', - items: [ { - label: 'SDK for JavaScript', - href: `${absoluteUrl}/sdk/js/docs/overview`, + label: 'Client for JavaScript', + href: `${absoluteUrl}/api/client/js/docs`, target: '_self', rel: 'dofollow', }, { - html: 'SDK for Python', - href: `${absoluteUrl}/sdk/python/docs/overview`, + label: 'Client for Python', + href: `${absoluteUrl}/api/client/python/docs`, + target: '_self', + rel: 'dofollow', + }, + { + label: 'CLI', + href: `${absoluteUrl}/cli/docs`, target: '_self', rel: 'dofollow', }, ], }, + // ECOSYSTEM (right) { - label: 'CLI', - href: `${absoluteUrl}/cli/docs`, - position: 'left', - activeBasePath: 'cli', + label: 'Academy', + href: `${absoluteUrl}/academy`, + activeBasePath: 'academy', + position: 'right', target: '_self', rel: 'dofollow', }, @@ -102,7 +114,7 @@ const themeConfig = { to: `${absoluteUrl}/open-source`, activeBasePath: 'open-source', target: '_self', - position: 'left', + position: 'right', className: 'navbar__item', items: [ { @@ -170,8 +182,14 @@ const themeConfig = { rel: 'dofollow', }, { - label: 'Platform', - href: `${absoluteUrl}/platform`, + label: 'Get started', + href: `${absoluteUrl}/get-started`, + target: '_self', + rel: 'dofollow', + }, + { + label: 'Actors', + href: `${absoluteUrl}/actors`, target: '_self', rel: 'dofollow', }, diff --git a/apify-docs-theme/src/theme/DocItemContent/index.js b/apify-docs-theme/src/theme/DocItemContent/index.js index c7a02d2ccc..62a2ca37a4 100644 --- a/apify-docs-theme/src/theme/DocItemContent/index.js +++ b/apify-docs-theme/src/theme/DocItemContent/index.js @@ -51,10 +51,13 @@ export default function DocItemContent({ children }) { '/api/v2/logs', '/api/v2/users', '/api/client', - '/platform', '/sdk', '/cli', '/academy', + '/get-started', + '/actors', + '/integrations', + '/account', ]; // Define paths that should not show LLMButtons (e.g., changelog pages) diff --git a/apify-docs-theme/src/theme/SearchBar/index.js b/apify-docs-theme/src/theme/SearchBar/index.js index 2cdc2e439c..00aa9af8fb 100644 --- a/apify-docs-theme/src/theme/SearchBar/index.js +++ b/apify-docs-theme/src/theme/SearchBar/index.js @@ -16,7 +16,13 @@ import './styles.css'; */ function matchesCurrentInstance(href, baseUrl) { if (baseUrl === '/') { - return href.startsWith('/academy') || href.startsWith('/platform'); + return ( + href.startsWith('/academy') || + href.startsWith('/get-started') || + href.startsWith('/actors') || + href.startsWith('/integrations') || + href.startsWith('/account') + ); } return href.startsWith(baseUrl); diff --git a/docusaurus.config.js b/docusaurus.config.js index 3aa4a391ab..f3a62c782e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -72,7 +72,7 @@ module.exports = { }, ].filter(Boolean), - onBrokenLinks: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('throw'), + onBrokenLinks: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('warn'), onBrokenAnchors: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('warn'), themes: [ [ @@ -118,7 +118,7 @@ module.exports = { showLastUpdateTime: false, editUrl: 'https://github.com/apify/apify-docs/edit/master/', path: './sources/platform', - routeBasePath: 'platform', + routeBasePath: '/', sidebarPath: require.resolve('./sources/platform/sidebars.js'), rehypePlugins: [externalLinkProcessor], }, @@ -377,7 +377,8 @@ module.exports = { markdown: { mermaid: true, hooks: { - onBrokenMarkdownLinks: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('throw'), + onBrokenMarkdownLinks: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('warn'), + onBrokenMarkdownImages: /** @type {import('@docusaurus/types').ReportingSeverity} */ ('warn'), }, parseFrontMatter: async (params) => { const result = await params.defaultParseFrontMatter(params); diff --git a/sources/academy/ai/ai-agents.mdx b/sources/academy/ai/ai-agents.mdx index 33276a465d..f6f589e12f 100644 --- a/sources/academy/ai/ai-agents.mdx +++ b/sources/academy/ai/ai-agents.mdx @@ -52,7 +52,7 @@ _Example input:_ _Example output:_ - Text response with insights -- Data stored in Apify [Dataset](/platform/storage/dataset) +- Data stored in Apify [Dataset](/actors/storage/dataset) :::note Agent memory @@ -253,7 +253,7 @@ Apify's pay-per-event (PPE) pricing model allows charging users based on specifi :::info How pay-per-event pricing works -If you want more details about PPE pricing, refer to our [PPE documentation](/platform/actors/publishing/monetize/pay-per-event). +If you want more details about PPE pricing, refer to our [PPE documentation](/actors/publishing/monetize/pay-per-event). ::: diff --git a/sources/academy/build-and-publish/apify-store-basics/how_actor_monetization_works.md b/sources/academy/build-and-publish/apify-store-basics/how_actor_monetization_works.md index 7e6f014fd0..7e92948684 100644 --- a/sources/academy/build-and-publish/apify-store-basics/how_actor_monetization_works.md +++ b/sources/academy/build-and-publish/apify-store-basics/how_actor_monetization_works.md @@ -34,7 +34,7 @@ Monetizing your Actor on the Apify platform involves several key steps: :::info Pass platform usage costs to users -Optionally, you can [pass costs associated with the platform usage](../../../platform/actors/publishing/monetize/pay-per-event#pass-platform-usage-to-users) to the users. +Optionally, you can [pass costs associated with the platform usage](../../../actors/publishing/monetize/pay-per-event#pass-platform-usage-to-users) to the users. Profit calculation: `profit = 0.8 * revenue` @@ -62,7 +62,7 @@ Profit calculation: `profit = 0.8 * revenue` :::info Pay-per-event details -If you want more details about PPE pricing, refer to our [PPE documentation](/platform/actors/publishing/monetize/pay-per-event). +If you want more details about PPE pricing, refer to our [PPE documentation](/actors/publishing/monetize/pay-per-event). ::: @@ -80,7 +80,7 @@ If you want more details about PPE pricing, refer to our [PPE documentation](/pl :::info Rental pricing details -If you want more details about rental pricing, refer to our [rental pricing documentation](/platform/actors/publishing/monetize/rental). +If you want more details about rental pricing, refer to our [rental pricing documentation](/actors/publishing/monetize/rental). ::: @@ -130,7 +130,7 @@ Learn more about what makes a good readme here: [How to create an Actor README]( ### Adapt when needed -Don’t be afraid to experiment with pricing, especially at the start. You can monitor your results in the dashboard and adjust if necessary. You can also choose to [pass platform usage costs to users](/platform/actors/publishing/monetize/pay-per-event#pass-platform-usage-to-users) while you’re still figuring out the right price. +Don’t be afraid to experiment with pricing, especially at the start. You can monitor your results in the dashboard and adjust if necessary. You can also choose to [pass platform usage costs to users](/actors/publishing/monetize/pay-per-event#pass-platform-usage-to-users) while you’re still figuring out the right price. To estimate pricing, run a few test runs and review the statistics in the Actor [**Analytics**](https://console.apify.com/actors?tab=analytics) tab. @@ -157,8 +157,8 @@ Example of useful pricing estimates from the **Analytics** tab: ## Resources - Learn about [incentives behind monetization](https://apify.com/partners/actor-developers) -- Detailed guide to [setting up monetization models](/platform/actors/publishing/monetize) -- Guide to [publishing Actors](/platform/actors/publishing) +- Detailed guide to [setting up monetization models](/actors/publishing/monetize) +- Guide to [publishing Actors](/actors/publishing) - Watch our webinar on how to [build, publish and monetize Actors](https://www.youtube.com/watch?v=4nxStxC1BJM) - Read a blog post from our CEO on the [reasoning behind monetizing Actors](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) - Learn about the [Creator plan](https://apify.com/pricing/creator-plan), which allows you to create and freely test your own Actors for $1 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 f3e77b9e45..486205ac0c 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 @@ -58,14 +58,14 @@ You can Actorize various projects ranging from open-source libraries, throughout Use these criteria to decide if your project is a good candidate for Actorization: -1. _Is it self-contained?_ Does the project work non-interactively, with a well-defined, preferably structured input and output format? Positive examples include various data processing utilities, web scrapers and other automation scripts. Negative examples are GUI applications or applications that run indefinitely. If you want to run HTTP APIs on Apify, you can do so using [Actor Standby](/platform/actors/development/programming-interface/standby). -2. _Can the state be stored in Apify storages?_ If the application has state that can be stored in a small number of files it can utilize [key-value store](/platform/storage/key-value-store), or if it processes records that can be stored in Apify’s [request queue](/platform/storage/request-queue). If the output consists of one or many similar JSON objects, it can utilize [dataset](/platform/storage/dataset). +1. _Is it self-contained?_ Does the project work non-interactively, with a well-defined, preferably structured input and output format? Positive examples include various data processing utilities, web scrapers and other automation scripts. Negative examples are GUI applications or applications that run indefinitely. If you want to run HTTP APIs on Apify, you can do so using [Actor Standby](/actors/development/programming-interface/standby). +2. _Can the state be stored in Apify storages?_ If the application has state that can be stored in a small number of files it can utilize [key-value store](/actors/storage/key-value-store), or if it processes records that can be stored in Apify’s [request queue](/actors/storage/request-queue). If the output consists of one or many similar JSON objects, it can utilize [dataset](/actors/storage/dataset). 3. _Can it be containerized?_ The project needs to be able to run in a Docker container. Apify currently does not support GPU workloads. External services (e.g., databases) need to be managed by developer. 4. _Can it use Apify tooling?_ Javascript/Typescript applications and Python applications can be Actorized with the help of the [Apify SDK](/sdk), which makes easy for your code to interacts with the Apify platform. Applications that can be run using just the CLI can also be Actorized using the Apify CLI by writing a simple shell script that retrieves user input using [Apify CLI](/cli/), then runs your application and sends the results back to Apify (also using the CLI). If your application is implemented differently, you can still call the [Apify API](/api/v2) directly - it’s just HTTP and pretty much every language has support for that but the implementation is less straightforward. ## Actorization guide -This guide outlines the steps to convert your application into an Apify [Actor](/platform/actors). Follow the documentation links for detailed information - this guide provides an overview rather than exhaustive instructions. +This guide outlines the steps to convert your application into an Apify [Actor](/actors). Follow the documentation links for detailed information - this guide provides an overview rather than exhaustive instructions. ### 1. Add Actor metadata - the `.actor` folder @@ -83,14 +83,14 @@ In case you're starting a new project, we strongly advise to start with a [templ :::note Quick Start for beginners - For a step-by-step introduction to creating your first Actor (including tech stack choices and development paths), see [Quick Start](/platform/actors/development/quick-start). + For a step-by-step introduction to creating your first Actor (including tech stack choices and development paths), see [Quick Start](/get-started/build-an-actor). ::: -The newly created `.actor` folder contains an `actor.json` file - a manifest of the Actor. See [documentation](/platform/actors/development/actor-definition/actor-json) for more details +The newly created `.actor` folder contains an `actor.json` file - a manifest of the Actor. See [documentation](/actors/development/actor-definition/actor-json) for more details -You must also make sure your Actor has a Dockerfile and that it installs everything needed to successfully run your application. Check out [Dockerfile documentation](/platform/actors/development/actor-definition/dockerfile) by Apify. If you don't want to use these, you are free to use any image as the base of your Actor. +You must also make sure your Actor has a Dockerfile and that it installs everything needed to successfully run your application. Check out [Dockerfile documentation](/actors/development/actor-definition/dockerfile) by Apify. If you don't want to use these, you are free to use any image as the base of your Actor. When launching the Actor, the Apify platform will simply run your Docker image. This means that a) you need to configure the `ENTRYPOINT` and `CMD` directives so that it launches your application and b) you can test your image locally using Docker. @@ -100,7 +100,7 @@ These steps are the bare minimum you need to run your code on Apify. The rest of Most Actors accept an input and produce an output. As part of Actorization, you need to define the input and output structure of your application. -For detailed information, read the docs for [input schema](/platform/actors/development/actor-definition/input-schema), [dataset schema](/platform/actors/development/actor-definition/dataset-schema), and general [storage](/platform/storage). +For detailed information, read the docs for [input schema](/actors/development/actor-definition/input-schema), [dataset schema](/actors/development/actor-definition/dataset-schema), and general [storage](/actors/storage). #### Design guidelines @@ -113,11 +113,11 @@ For detailed information, read the docs for [input schema](/platform/actors/deve ### 3. Handle state persistence (optional) -If your application performs a number of well-defined subtasks, the [request queue](/platform/storage/request-queue) lets you pause and resume execution on job restart. This is important for long-running jobs that might be migrated between servers at some point. In addition, this allows the Apify platform to display the progress to your users in the UI. +If your application performs a number of well-defined subtasks, the [request queue](/actors/storage/request-queue) lets you pause and resume execution on job restart. This is important for long-running jobs that might be migrated between servers at some point. In addition, this allows the Apify platform to display the progress to your users in the UI. A lightweight alternative to the request queue is simply storing the state of your application as a JSON object in the key-value store and checking for that when your Actor is starting. -Fully-fledged Actors will often combine these two approaches for maximum reliability. More on this topic you find in the [state persistence](/platform/actors/development/builds-and-runs/state-persistence) article. +Fully-fledged Actors will often combine these two approaches for maximum reliability. More on this topic you find in the [state persistence](/actors/development/builds-and-runs/state-persistence) article. ### 4. Write Actorization code @@ -127,12 +127,12 @@ Unless you’re writing an application targeted directly on the Apify platform, Apify provides SDKs for [JavaScript](/sdk/js/) and [Python](/sdk/python/) plus the [Apify CLI](/cli/) allowing an easy interaction with the Apify platform from the command line. -Check out [programming interface](/platform/actors/development/programming-interface/) documentation article for details on interacting with the Apify platform in your Actor's code. +Check out [programming interface](/actors/development/programming-interface/) documentation article for details on interacting with the Apify platform in your Actor's code. ### 5. Deploy the Actor -Deployment to the Apify platform can be done easily via `apify push` command of the [Apify CLI](/cli/) and for details see [deployment](/platform/actors/development/deployment) documentation. +Deployment to the Apify platform can be done easily via `apify push` command of the [Apify CLI](/cli/) and for details see [deployment](/actors/development/deployment) documentation. ### 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 the 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). +For details on publishing the Actor in [Apify Store](https://apify.com/store) see the [Publishing and monetization](/actors/publishing). You can also follow the 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/academy/build-and-publish/how-to-build/running_a_web_server.md b/sources/academy/build-and-publish/how-to-build/running_a_web_server.md index 8a4eaecc86..b1ff2264a1 100644 --- a/sources/academy/build-and-publish/how-to-build/running_a_web_server.md +++ b/sources/academy/build-and-publish/how-to-build/running_a_web_server.md @@ -19,7 +19,7 @@ Running a web server in an Actor is a piece of cake! Each Actor run is available If you start a web server on the port defined by the **APIFY_CONTAINER_PORT** environment variable (the default value is **4321**), the container URL becomes available and gets displayed in the **Live View** tab in the Actor run console. -For more details, see [the documentation](/platform/actors/development/programming-interface/container-web-server). +For more details, see [the documentation](/actors/development/programming-interface/container-web-server). ## Building the Actor {#building-the-actor} diff --git a/sources/academy/build-and-publish/why_publish.md b/sources/academy/build-and-publish/why_publish.md index d7e61a6b21..72c80de41d 100644 --- a/sources/academy/build-and-publish/why_publish.md +++ b/sources/academy/build-and-publish/why_publish.md @@ -58,7 +58,7 @@ Apify Store is a growing library of thousands of Actors, most created by communi ### Maintain quality -Public Actors require higher standards than private ones. Since users depend on your Actor, you'll need to commit to regular maintenance - reserve approximately 2 hours per week for bug fixes, updates, and user support. Thorough documentation is essential; write clear README files using simple language since users may not be developers. Set up automated testing or use manual testing to prevent user issues, and respond promptly to issues through the Issues tab, where your response time is publicly visible. Learn more about metrics determining quality in [Actor quality score documentation](/platform/actors/publishing/quality-score). +Public Actors require higher standards than private ones. Since users depend on your Actor, you'll need to commit to regular maintenance - reserve approximately 2 hours per week for bug fixes, updates, and user support. Thorough documentation is essential; write clear README files using simple language since users may not be developers. Set up automated testing or use manual testing to prevent user issues, and respond promptly to issues through the Issues tab, where your response time is publicly visible. Learn more about metrics determining quality in [Actor quality score documentation](/actors/publishing/quality-score). ### When you need to change things @@ -78,4 +78,4 @@ Learn more: - [How to build Actors](/academy/actor-marketing-playbook/store-basics/how-to-build-actors) - [How Apify Store works](/academy/actor-marketing-playbook/store-basics/how-store-works) -- [Publish your Actor](/platform/actors/publishing/publish) +- [Publish your Actor](/actors/publishing/publish) diff --git a/sources/academy/platform/deploying_your_code/deploying.md b/sources/academy/platform/deploying_your_code/deploying.md index 2f3185affa..a1cf6ad31a 100644 --- a/sources/academy/platform/deploying_your_code/deploying.md +++ b/sources/academy/platform/deploying_your_code/deploying.md @@ -43,7 +43,7 @@ The final step is to click on **API** in the top right corner of our Actor's pag And scroll through all of the links until we find the **Build Actor** API endpoint. Now we'll copy this endpoint's URL, head back over to our GitHub repository and navigate to **Settings > Webhooks > Add webhook**. The final thing to do is to paste the URL and save the webhook. -![Adding a webhook to your GitHub repository](../../../platform/actors/development/deployment/images/ci-github-integration.png) +![Adding a webhook to your GitHub repository](../../../actors/development/deployment/images/ci-github-integration.png) That's it! The Actor should now pull its source code from the repository and automatically build. @@ -75,4 +75,4 @@ The next step is to test your Actor and experiment with the vast amount of featu ## Wrap up {#next} -That's it! In this short section, you've learned how to take your code written in any programming language and turn it into a usable Actor that can run on the Apify platform! The next step is to start looking into the [paid Actors](/platform/actors/publishing) program, which allows you to monetize your work. +That's it! In this short section, you've learned how to take your code written in any programming language and turn it into a usable Actor that can run on the Apify platform! The next step is to start looking into the [paid Actors](/actors/publishing) program, which allows you to monetize your work. diff --git a/sources/academy/platform/deploying_your_code/input_schema.md b/sources/academy/platform/deploying_your_code/input_schema.md index 82eeab6b30..7d8203b0ef 100644 --- a/sources/academy/platform/deploying_your_code/input_schema.md +++ b/sources/academy/platform/deploying_your_code/input_schema.md @@ -9,7 +9,7 @@ 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'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. +Though writing an [input schema](/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. :::note JSON requirement @@ -55,7 +55,7 @@ Each property's key corresponds to the name we're expecting within our code, whi ## Property types & editor types {#property-types} -Within our new **numbers** property, there are two more fields we must specify. Firstly, we must let the platform know that we're expecting an array of numbers with the **type** field. Then, we should also instruct Apify on which UI component to render for this input property. In our case, we have an array of numbers, which means we should use the **json** editor type that we discovered in the ["array" section](/platform/actors/development/actor-definition/input-schema/specification/v1#array) of the input schema documentation. We could also use **stringList**, but then we'd have to parse out the numbers from the strings. +Within our new **numbers** property, there are two more fields we must specify. Firstly, we must let the platform know that we're expecting an array of numbers with the **type** field. Then, we should also instruct Apify on which UI component to render for this input property. In our case, we have an array of numbers, which means we should use the **json** editor type that we discovered in the ["array" section](/actors/development/actor-definition/input-schema/specification/v1#array) of the input schema documentation. We could also use **stringList**, but then we'd have to parse out the numbers from the strings. ```json { @@ -106,8 +106,8 @@ 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. -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. +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](/actors/development/actor-definition/input-schema) when writing a schema. ## Next up {#next} -In the [next lesson](/platform/actors/development/actor-definition/dataset-schema), we'll learn how to generate an appealing Overview table to display our Actor's results in real time, so users can get immediate feedback about the data being extracted. +In the [next lesson](/actors/development/actor-definition/dataset-schema), we'll learn how to generate an appealing Overview table to display our Actor's results in real time, so users can get immediate feedback about the data being extracted. diff --git a/sources/academy/platform/deploying_your_code/inputs_outputs.md b/sources/academy/platform/deploying_your_code/inputs_outputs.md index db05c0338f..85c5bb41c5 100644 --- a/sources/academy/platform/deploying_your_code/inputs_outputs.md +++ b/sources/academy/platform/deploying_your_code/inputs_outputs.md @@ -19,7 +19,7 @@ Understanding inputs and outputs is essential because they are read/written diff ## A bit about storage {#about-storage} -You can read/write your inputs/outputs: to the [key-value store](/platform/storage/key-value-store), or to the [dataset](/platform/storage/dataset). The key-value store can be used to store any sort of unorganized/unrelated data in any format, while the data pushed to a dataset typically resembles a table with columns (fields) and rows (items). Each Actor's run is allocated both a default dataset and a default key-value store. +You can read/write your inputs/outputs: to the [key-value store](/actors/storage/key-value-store), or to the [dataset](/actors/storage/dataset). The key-value store can be used to store any sort of unorganized/unrelated data in any format, while the data pushed to a dataset typically resembles a table with columns (fields) and rows (items). Each Actor's run is allocated both a default dataset and a default key-value store. When running locally, these storages are accessible through the **storage** folder within your project's root directory, while on the platform they are accessible via Apify's API. diff --git a/sources/academy/platform/deploying_your_code/output_schema.md b/sources/academy/platform/deploying_your_code/output_schema.md index ed3c6156ee..f9eeb90ff4 100644 --- a/sources/academy/platform/deploying_your_code/output_schema.md +++ b/sources/academy/platform/deploying_your_code/output_schema.md @@ -11,7 +11,7 @@ slug: /deploying-your-code/dataset-schema The dataset schema generates an interface that enables users to instantly preview their Actor results in real time. -![Dataset Schema](../../../platform/actors/development/actor_definition/images/output-schema-example.png) +![Dataset Schema](../../../actors/development/actor_definition/images/output-schema-example.png) In this quick tutorial, you will learn how to set up an output tab for your own Actor. @@ -162,7 +162,7 @@ Great! Now that everything is set up, it's time to run the Actor and admire your :::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. +Visit the [dataset schema documentation](/actors/development/actor-definition/dataset-schema) for more detailed information about how to implement this feature. ::: diff --git a/sources/academy/platform/expert_scraping_with_apify/actors_webhooks.md b/sources/academy/platform/expert_scraping_with_apify/actors_webhooks.md index c5c7d1d4a8..57a03830ef 100644 --- a/sources/academy/platform/expert_scraping_with_apify/actors_webhooks.md +++ b/sources/academy/platform/expert_scraping_with_apify/actors_webhooks.md @@ -32,8 +32,8 @@ Webhooks are a powerful tool that can be used for just about anything. You can s Prior to moving forward, please read over these resources: -- Read about [running Actors, handling Actor inputs, memory and CPU](/platform/actors/running). -- Learn about [Actor webhooks](/platform/integrations/webhooks), which we will implement in the next lesson. +- Read about [running Actors, handling Actor inputs, memory and CPU](/actors/running). +- Learn about [Actor webhooks](/integrations/webhooks), which we will implement in the next lesson. - Learn [how to run Actors](/academy/api/run-actor-and-retrieve-data-via-api) using Apify's REST API. ## Knowledge check 📝 {#quiz} diff --git a/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md b/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md index e5f034e1aa..ad3e020555 100644 --- a/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md +++ b/sources/academy/platform/expert_scraping_with_apify/bypassing_anti_scraping.md @@ -19,7 +19,7 @@ You might have already noticed that we've been using the **RESIDENTIAL** proxy g ## Learning 🧠 {#learning} - Skim [this page](https://apify.com/proxy) for a general idea of Apify Proxy. -- Give the [proxy documentation](/platform/proxy) a solid readover (feel free to skip most of the examples). +- Give the [proxy documentation](/actors/proxy) a solid readover (feel free to skip most of the examples). - Check out the [anti-scraping guide](../../webscraping/anti_scraping/index.md). - Gain a solid understanding of the [SessionPool](https://crawlee.dev/api/core/class/SessionPool). - Look at a few Actors on the [Apify store](https://apify.com/store). How are they utilizing proxies? diff --git a/sources/academy/platform/expert_scraping_with_apify/managing_source_code.md b/sources/academy/platform/expert_scraping_with_apify/managing_source_code.md index e9cf36d342..1c59e674b9 100644 --- a/sources/academy/platform/expert_scraping_with_apify/managing_source_code.md +++ b/sources/academy/platform/expert_scraping_with_apify/managing_source_code.md @@ -16,7 +16,7 @@ In this brief lesson, we'll discuss how to better manage an Actor's source code. Thus far, every time we've updated our code on the Apify platform, we've used the `apify push` CLI command; however, this can be problematic for a few reasons - mainly because, if someone else wants to make a change to/maintain your code, they don't have access to it, as it is on your local machine. -If you're not yet familiar with Git, please get familiar with it through the [Git documentation](https://git-scm.com/docs), then take a quick moment to read about [GitHub integration](/platform/integrations/github) in the Apify docs. +If you're not yet familiar with Git, please get familiar with it through the [Git documentation](https://git-scm.com/docs), then take a quick moment to read about [GitHub integration](/integrations/github) in the Apify docs. Also, try to explore the **Multifile editor** in one of the Actors you developed in the previous lessons before moving forward. @@ -52,7 +52,7 @@ The final step is to click on **API** in the top right corner of your Actor's pa And scroll through all of the links until you find the **Build Actor** API endpoint. Copy this endpoint's URL, then head back over to your GitHub repository and navigate to **Settings > Webhooks > Add webhook**. The final thing to do is to paste the URL and save the webhook. -![Adding a webhook to your GitHub repo](../../../platform/actors/development/deployment/images/ci-github-integration.png) +![Adding a webhook to your GitHub repo](../../../actors/development/deployment/images/ci-github-integration.png) And you're done! 🎉 diff --git a/sources/academy/platform/expert_scraping_with_apify/migrations_maintaining_state.md b/sources/academy/platform/expert_scraping_with_apify/migrations_maintaining_state.md index 707e64fd7d..cf5d05baa1 100644 --- a/sources/academy/platform/expert_scraping_with_apify/migrations_maintaining_state.md +++ b/sources/academy/platform/expert_scraping_with_apify/migrations_maintaining_state.md @@ -18,14 +18,14 @@ When a migration happens, you want to do a so-called "state transition", which m ## Learning 🧠 {#learning} -Read this [article](/platform/actors/development/builds-and-runs/state-persistence) on migrations and dealing with state transitions. +Read this [article](/actors/development/builds-and-runs/state-persistence) on migrations and dealing with state transitions. Before moving forward, read about Actor [events](/sdk/js/docs/upgrading/upgrading-to-v3#events) and how to listen for them. ## Knowledge check 📝 {#quiz} 1. Actors have an option in the **Settings** tab to **Restart on error**. Would you use this feature for regular Actors? When would you use this feature? -2. Migrations happen randomly, but by [aborting **gracefully**](/platform/actors/running/runs-and-builds#aborting-runs), you can simulate a similar situation. Try this out on the platform and observe what happens. What changes occur, and what remains the same for the restarted Actor's run? +2. Migrations happen randomly, but by [aborting **gracefully**](/actors/running/runs-and-builds#aborting-runs), you can simulate a similar situation. Try this out on the platform and observe what happens. What changes occur, and what remains the same for the restarted Actor's run? 3. Why don't you (usually) need to add any special migration handling code for a standard crawling/scraping Actor? Are there any features in the Crawlee/Apify SDK that handle this under the hood? 4. How can you intercept the migration event? How much time do you have after this event happens and before the Actor migrates? 5. When would you persist data to the default key-value store instead of to a named key-value store? diff --git a/sources/academy/platform/expert_scraping_with_apify/solutions/handling_migrations.md b/sources/academy/platform/expert_scraping_with_apify/solutions/handling_migrations.md index 24399f8df6..2628ff0914 100644 --- a/sources/academy/platform/expert_scraping_with_apify/solutions/handling_migrations.md +++ b/sources/academy/platform/expert_scraping_with_apify/solutions/handling_migrations.md @@ -230,7 +230,7 @@ That's everything! Now, even if the Actor migrates (or is gracefully aborted and **A:** It's not best to use this option by default. If it fails, there must be a reason, which would need to be thought through first - meaning that the edge case of failing should be handled when resurrecting the Actor. The state should be persisted beforehand. -**Q: Migrations happen randomly, but by [aborting gracefully](/platform/actors/running/runs-and-builds#aborting-runs), you can simulate a similar situation. Try this out on the platform and observe what happens. What changes occur, and what remains the same for the restarted Actor's run?** +**Q: Migrations happen randomly, but by [aborting gracefully](/actors/running/runs-and-builds#aborting-runs), you can simulate a similar situation. Try this out on the platform and observe what happens. What changes occur, and what remains the same for the restarted Actor's run?** **A:** After aborting or throwing an error mid-process, it manages to start back from where it was upon resurrection. diff --git a/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md b/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md index ea5640c14d..95f796eb1d 100644 --- a/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md +++ b/sources/academy/platform/expert_scraping_with_apify/tasks_and_storage.md @@ -22,9 +22,9 @@ Storage allows us to save persistent data for further processing. As you'll lear ## Learning 🧠 {#learning} -- Check out [the docs about Actor tasks](/platform/actors/running/tasks). -- Read about the [two main storage options](/platform/storage/dataset) on the Apify platform. -- Understand the [crucial differences between named and unnamed storages](/platform/storage/usage#named-and-unnamed-storages). +- Check out [the docs about Actor tasks](/actors/running/tasks). +- Read about the [two main storage options](/actors/storage/dataset) on the Apify platform. +- Understand the [crucial differences between named and unnamed storages](/actors/storage/usage#named-and-unnamed-storages). - Learn about the [`Dataset`](/sdk/js/reference/class/Dataset) and [`KeyValueStore`](/sdk/js/reference/class/KeyValueStore) objects in the Apify SDK. ## Knowledge check 📝 {#quiz} diff --git a/sources/academy/platform/getting_started/creating_actors.md b/sources/academy/platform/getting_started/creating_actors.md index 31556cfd76..36d3fc2900 100644 --- a/sources/academy/platform/getting_started/creating_actors.md +++ b/sources/academy/platform/getting_started/creating_actors.md @@ -28,7 +28,7 @@ You'll be presented with a page featuring two ways to get started with a new Act ## Creating Actor from existing source code {#existing-source-code} -If you already have your code hosted by a Git provider, you can use it to create an Actor by linking the repository. If you use GitHub, you can use our [GitHub integration](/platform/integrations/github) to create an Actor from your public or private repository. You can also use GitLab, Bitbucket or other Git providers or external repositories. +If you already have your code hosted by a Git provider, you can use it to create an Actor by linking the repository. If you use GitHub, you can use our [GitHub integration](/integrations/github) to create an Actor from your public or private repository. You can also use GitLab, Bitbucket or other Git providers or external repositories. ![Create an Actor from Git repository](./images/create-actor-git.png) @@ -56,7 +56,7 @@ You will end up on a template detail page where you can see all the important in ### Using the template in the Web IDE {#web-ide} -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. +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](/get-started/build-an-actor/web-ide) where you can see the code of the template and start editing it. :::tip Web IDE @@ -143,7 +143,7 @@ The Actor takes the `url` from the input and then: 3. Extracts headings (H1 - H6) from the page. 4. Stores the extracted data. -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. +The extracted data is stored in the [Dataset](/actors/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. :::tip Customize template @@ -157,7 +157,7 @@ Learn more about the Actor input and output [in the next page](/academy/getting- ## 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. +In order to run the Actor, you need to [build](/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. ![Build the Actor](./images/build-actor.png) diff --git a/sources/academy/platform/getting_started/inputs_outputs.md b/sources/academy/platform/getting_started/inputs_outputs.md index 1b942658df..e11b9a9f99 100644 --- a/sources/academy/platform/getting_started/inputs_outputs.md +++ b/sources/academy/platform/getting_started/inputs_outputs.md @@ -69,7 +69,7 @@ This step isn't necessary, as the Actor will still be able to take input in JSON :::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). +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](/actors/development/actor-definition/input-schema/specification/v1#integer). ::: @@ -96,7 +96,7 @@ On the results tab, there are a whole lot of options for which format to view/do There's our solution! Did it work for you as well? Now, we can download the data right from the Dataset tab to be used elsewhere, or even programmatically retrieve it by using [Apify's API](/api/v2) (we'll be discussing how to do this in the next lesson). -It's important to note that the default dataset of the Actor, which we pushed our solution to, will be retained for 7 days. If we wanted the data to be retained for an indefinite period of time, we'd have to use a named dataset. For more information about named storages vs unnamed storages, read a bit about [data retention on the Apify platform](/platform/storage/usage#data-retention). +It's important to note that the default dataset of the Actor, which we pushed our solution to, will be retained for 7 days. If we wanted the data to be retained for an indefinite period of time, we'd have to use a named dataset. For more information about named storages vs unnamed storages, read a bit about [data retention on the Apify platform](/actors/storage/usage#data-retention). ## Next up {#next} diff --git a/sources/academy/tutorials/api/index.md b/sources/academy/tutorials/api/index.md index 4cd998bdd9..9fe065de62 100644 --- a/sources/academy/tutorials/api/index.md +++ b/sources/academy/tutorials/api/index.md @@ -10,7 +10,7 @@ slug: /api --- -This section explains how you can run [Apify Actors](/platform/actors) using Apify's [API](/api/v2), retrieve their results, and integrate them into your own product and workflows. You can do this using a raw HTTP client, or you can benefit from using one of our API clients for: +This section explains how you can run [Apify Actors](/actors) using Apify's [API](/api/v2), retrieve their results, and integrate them into your own product and workflows. You can do this using a raw HTTP client, or you can benefit from using one of our API clients for: - [JavaScript](/api/client/js/) - [Python](/api/client/python) 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 bf182d06b6..14b6d23e63 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 @@ -11,7 +11,7 @@ slug: /api/run-actor-and-retrieve-data-via-api import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -The most popular way of [integrating](https://help.apify.com/en/collections/1669769-integrations) the Apify platform with an external project/application is by programmatically running an [Actor](/platform/actors) or [task](/platform/actors/running/tasks), waiting for it to complete its run, then collecting its data and using it within the project. Follow this tutorial to have an idea on how to approach this, it isn't as complicated as it sounds! +The most popular way of [integrating](https://help.apify.com/en/collections/1669769-integrations) the Apify platform with an external project/application is by programmatically running an [Actor](/actors) or [task](/actors/running/tasks), waiting for it to complete its run, then collecting its data and using it within the project. Follow this tutorial to have an idea on how to approach this, it isn't as complicated as it sounds! > Remember to check out our [API documentation](/api/v2) with examples in different languages and a live API console. We also recommend testing the API with a desktop client like [Postman](https://www.postman.com/) or [Insomnia](https://insomnia.rest). @@ -25,7 +25,7 @@ If the Actor being run via API takes 5 minutes or less to complete a typical run ## Run an Actor or task {#run-an-actor-or-task} -> If you are unsure about the differences between an Actor and a task, you can read about them in the [tasks](/platform/actors/running/tasks) documentation. In brief, tasks are pre-configured inputs for Actors. +> If you are unsure about the differences between an Actor and a task, you can read about them in the [tasks](/actors/running/tasks) documentation. In brief, tasks are pre-configured inputs for Actors. The API endpoints and usage (for both sync and async) for [Actors](/api/v2#tag/ActorsRun-collection/operation/act_runs_post) and [tasks](/api/v2/actor-task-runs-post) are essentially the same. @@ -33,7 +33,7 @@ To run, or **call**, an Actor/task, you will need a few things: - The name or ID of the Actor/task. The name looks like `username~actorName` or `username~taskName`. The ID can be retrieved on the **Settings** page of the Actor/task. -- Your [API token](/platform/integrations), which you can find on the **API & Integrations** page in [Apify Console](https://console.apify.com/settings/integrations) (do not share it with anyone!). +- Your [API token](/integrations), which you can find on the **API & Integrations** page in [Apify Console](https://console.apify.com/settings/integrations) (do not share it with anyone!). - Possibly an input, which is passed in JSON format as the request's **body**. @@ -61,7 +61,7 @@ We can also add settings for the Actor (which will override the default settings https://api.apify.com/v2/acts/ACTOR_NAME_OR_ID/runs?token=YOUR_TOKEN&memory=8192&build=beta ``` -This works in almost exactly the same way for both Actors and tasks; however, for tasks, there is no reason to specify a [`build`](/platform/actors/development/builds-and-runs/builds) parameter, as a task already has only one specific Actor build which cannot be changed with query parameters. +This works in almost exactly the same way for both Actors and tasks; however, for tasks, there is no reason to specify a [`build`](/actors/development/builds-and-runs/builds) parameter, as a task already has only one specific Actor build which cannot be changed with query parameters. ### Input JSON {#input-json} @@ -149,7 +149,7 @@ If your synchronous run exceeds the 5-minute time limit, the response will be a ### Synchronous runs with dataset output {#synchronous-runs-with-dataset-output} -Most Actor runs will store their data in the default [dataset](/platform/storage/dataset). The Apify API provides **run-sync-get-dataset-items** endpoints for [Actors](/api/v2/act-run-sync-get-dataset-items-post) and [tasks](/api/v2/actor-task-run-sync-get-dataset-items-post), which allow you to run an Actor and receive the items from the default dataset once the run has finished. +Most Actor runs will store their data in the default [dataset](/actors/storage/dataset). The Apify API provides **run-sync-get-dataset-items** endpoints for [Actors](/api/v2/act-run-sync-get-dataset-items-post) and [tasks](/api/v2/actor-task-run-sync-get-dataset-items-post), which allow you to run an Actor and receive the items from the default dataset once the run has finished. Here is a Node.js example of calling a task via the API and logging the dataset items to the console: @@ -186,7 +186,7 @@ items.forEach((item) => { ### Synchronous runs with key-value store output {#synchronous-runs-with-key-value-store-output} -[Key-value stores](/platform/storage/key-value-store) are useful for storing files like images, HTML snapshots, or JSON data. The Apify API provides **run-sync** endpoints for [Actors](/api/v2/act-run-sync-post) and [tasks](/api/v2/actor-task-run-sync-post), which allow you to run a specific task and receive the output. By default, they return the `OUTPUT` record from the default key-value store. +[Key-value stores](/actors/storage/key-value-store) are useful for storing files like images, HTML snapshots, or JSON data. The Apify API provides **run-sync** endpoints for [Actors](/api/v2/act-run-sync-post) and [tasks](/api/v2/actor-task-run-sync-post), which allow you to run a specific task and receive the output. By default, they return the `OUTPUT` record from the default key-value store. ## Asynchronous flow {#asynchronous-flow} @@ -218,13 +218,13 @@ Once again, the final response will be the **run info object**; however, now its #### Webhooks {#webhooks} -If you have a server, [webhooks](/platform/integrations/webhooks) are the most elegant and flexible solution for integrations with Apify. You can set up a webhook for any Actor or task, and that webhook will send a POST request to your server after an [event](/platform/integrations/webhooks/events) has occurred. +If you have a server, [webhooks](/integrations/webhooks) are the most elegant and flexible solution for integrations with Apify. You can set up a webhook for any Actor or task, and that webhook will send a POST request to your server after an [event](/integrations/webhooks/events) has occurred. Usually, this event is a successfully finished run, but you can also set a different webhook for failed runs, etc. ![Webhook example](./images/webhook.png) -The webhook will send you a pretty complicated [JSON object](/platform/integrations/webhooks/actions), but usually, you would only be interested in the `resource` object within the response, which is like the **run info** JSON from the previous sections. We can leave the payload template as is for our example since it is all we need. +The webhook will send you a pretty complicated [JSON object](/integrations/webhooks/actions), but usually, you would only be interested in the `resource` object within the response, which is like the **run info** JSON from the previous sections. We can leave the payload template as is for our example since it is all we need. Once your server receives this request from the webhook, you know that the event happened, and you can ask for the complete data. @@ -248,11 +248,11 @@ Once a status of `SUCCEEDED` or `FAILED` has been received, we know the run has Unless you used the [synchronous call](#synchronous-flow) mentioned above, you will have to make one additional request to the API to retrieve the data. -The **run info** JSON also contains the IDs of the default [dataset](/platform/storage/dataset) and [key-value store](/platform/storage/key-value-store) that are allocated separately for each run, which is usually everything you need. The fields are called `defaultDatasetId` and `defaultKeyValueStoreId`. +The **run info** JSON also contains the IDs of the default [dataset](/actors/storage/dataset) and [key-value store](/actors/storage/key-value-store) that are allocated separately for each run, which is usually everything you need. The fields are called `defaultDatasetId` and `defaultKeyValueStoreId`. #### Retrieving a dataset {#retrieve-a-dataset} -> 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. +> If you are scraping products, or any list of items with similar fields, the [dataset](/actors/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 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. @@ -272,7 +272,7 @@ https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&offset=250000 #### Retrieving a key-value store {#retrieve-a-key-value-store} -> [Key-value stores](/platform/storage/key-value-store) are mainly useful if you have a single output or any kind of files that cannot be [stringified](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) (such as images or PDFs). +> [Key-value stores](/actors/storage/key-value-store) are mainly useful if you have a single output or any kind of files that cannot be [stringified](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) (such as images or PDFs). When you want to retrieve something from a key-value store, the `defaultKeyValueStoreId` is _not_ enough. You also need to know the name (or **key**) of the record you want to retrieve. diff --git a/sources/academy/tutorials/api/using_apify_from_php.md b/sources/academy/tutorials/api/using_apify_from_php.md index 43bae729df..67f0dee8cd 100644 --- a/sources/academy/tutorials/api/using_apify_from_php.md +++ b/sources/academy/tutorials/api/using_apify_from_php.md @@ -79,7 +79,7 @@ $data = $parsedResponse['data']; echo \json_encode($data, JSON_PRETTY_PRINT); ``` -You should see information about the run, including its ID and the ID of its default [dataset](/platform/storage/dataset). Take note of these, we will need them later. +You should see information about the run, including its ID and the ID of its default [dataset](/actors/storage/dataset). Take note of these, we will need them later. ## Getting the results from dataset @@ -125,7 +125,7 @@ All the available parameters are described in [our API reference](/api/v2/datase ## Getting the results from key-value stores -Datasets are great for structured data, but are not suited for binary files like images or PDFs. In these cases, Actors store their output in [key-value stores](/platform/storage/key-value-store). One such Actor is the **HTML String To PDF** ([mhamas/html-string-to-pdf](https://apify.com/mhamas/html-string-to-pdf)) converter. Let's run it. +Datasets are great for structured data, but are not suited for binary files like images or PDFs. In these cases, Actors store their output in [key-value stores](/actors/storage/key-value-store). One such Actor is the **HTML String To PDF** ([mhamas/html-string-to-pdf](https://apify.com/mhamas/html-string-to-pdf)) converter. Let's run it. ```php $response = $client->post('acts/mhamas~html-string-to-pdf/runs', [ @@ -202,7 +202,7 @@ file_put_contents(__DIR__ . '/hi-world.pdf', $response->getBody()); ## Webhooks -For Actors that take longer to run, we can use [webhooks](/platform/integrations/webhooks). A webhook is an HTML POST request that is sent to a specified URL when an Actor's status changes. We can use them as a kind of notification that is sent when your run finishes. You can set them up using query parameters. If we used webhooks in the example above, it would look like this: +For Actors that take longer to run, we can use [webhooks](/integrations/webhooks). A webhook is an HTML POST request that is sent to a specified URL when an Actor's status changes. We can use them as a kind of notification that is sent when your run finishes. You can set them up using query parameters. If we used webhooks in the example above, it would look like this: ```php // Webhooks need to be passed as a base64-encoded JSON string @@ -227,7 +227,7 @@ $response = $client->post('acts/mhamas~html-string-to-pdf/runs', [ ## How to use Apify Proxy -Let's use another important feature: [proxy](/platform/proxy). If you want to make sure that your server's IP address won't get blocked somewhere when making requests, you can use the automatic proxy selection mode. +Let's use another important feature: [proxy](/actors/proxy). If you want to make sure that your server's IP address won't get blocked somewhere when making requests, you can use the automatic proxy selection mode. ```php $client = new \GuzzleHttp\Client([ @@ -258,7 +258,7 @@ $response = $client->get("https://api.apify.com/v2/browser-info"); echo $response->getBody(); ``` -[See the proxy docs](/platform/proxy/usage) for more details on using specific proxies. +[See the proxy docs](/actors/proxy/usage) for more details on using specific proxies. ## Feedback diff --git a/sources/academy/tutorials/apify_scrapers/cheerio_scraper.md b/sources/academy/tutorials/apify_scrapers/cheerio_scraper.md index 586a835b40..eb685aee07 100644 --- a/sources/academy/tutorials/apify_scrapers/cheerio_scraper.md +++ b/sources/academy/tutorials/apify_scrapers/cheerio_scraper.md @@ -502,7 +502,7 @@ Thank you for reading this whole tutorial! Really! It's important to us that our ## What's next * Check out the [Apify SDK](https://docs.apify.com/sdk) and its [Getting started](https://docs.apify.com/sdk/js/docs/guides/apify-platform) tutorial if you'd like to try building your own Actors. It's a bit more complex and involved than writing a `pageFunction`, but it allows you to fine-tune all the details of your scraper to your liking. -* [Take a deep dive into Actors](/platform/actors), from how they work to [publishing](/platform/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. +* [Take a deep dive into Actors](/actors), from how they work to [publishing](/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. * Found out you're not into the coding part but would still to use Apify Actors? Check out our [ready-made solutions](https://apify.com/store) or [order a custom Actor](https://apify.com/contact-sales) from an Apify-certified developer. diff --git a/sources/academy/tutorials/apify_scrapers/getting_started.md b/sources/academy/tutorials/apify_scrapers/getting_started.md index 9b05130eba..c359843e2f 100644 --- a/sources/academy/tutorials/apify_scrapers/getting_started.md +++ b/sources/academy/tutorials/apify_scrapers/getting_started.md @@ -17,7 +17,7 @@ Welcome to the getting started tutorial! It will walk you through creating your It doesn't matter whether you arrived here from **Web Scraper** ([apify/web-scraper](https://apify.com/apify/web-scraper)), **Puppeteer Scraper** ([apify/puppeteer-scraper](https://apify.com/apify/puppeteer-scraper)) or **Cheerio Scraper** ([apify/cheerio-scraper](https://apify.com/apify/cheerio-scraper)). All of them are **Actors** and for now, let's think of an **Actor** as an application that you can use with your own configuration. **apify/web-scraper** is therefore an application called **web-scraper**, built by **apify**, that you can configure to scrape any webpage. We call these configurations **tasks**. -> If you need help choosing the right scraper, see this [great article](https://help.apify.com/en/articles/3024655-choosing-the-right-solution). If you want to learn more about Actors in general, you can read our [Actors page](https://apify.com/actors) or [browse the documentation](/platform/actors). +> If you need help choosing the right scraper, see this [great article](https://help.apify.com/en/articles/3024655-choosing-the-right-solution). If you want to learn more about Actors in general, you can read our [Actors page](https://apify.com/actors) or [browse the documentation](/actors). You can create 10 different **tasks** for 10 different websites, with very different options, but there will always be just one **Actor**, the `apify/*-scraper` you chose. This is the essence of tasks. They are nothing but **saved configurations** of the Actor that you can run repeatedly. @@ -35,7 +35,7 @@ This takes you to the **Input and options** tab of the task configuration. Befor Scroll down to the **Performance and limits** section and set the **Max pages per run** option to **10**. This tells your task to finish after 10 pages have been visited. We don't need to crawl the whole domain to see that the Actor works. -> This also helps with keeping your [compute unit](/platform/actors/running/usage-and-resources) (CU) consumption low. To get an idea, our free plan includes 10 CUs and this run will consume about 0.04 CU, so you can run it 250 times a month for free. If you accidentally go over the limit, no worries, we won't charge you for it. You just won't be able to run more tasks that month. +> This also helps with keeping your [compute unit](/actors/running/usage-and-resources) (CU) consumption low. To get an idea, our free plan includes 10 CUs and this run will consume about 0.04 CU, so you can run it 250 times a month for free. If you accidentally go over the limit, no worries, we won't charge you for it. You just won't be able to run more tasks that month. Now click **Save & Run**! *(in the bottom-left part of your screen)* @@ -77,7 +77,7 @@ You can find all the task runs and their detail pages here. Every time you start ### Webhooks -Webhooks are a feature that help keep you aware of what's happening with your tasks. You can set them up to inform you when a task starts, finishes, fails etc., or you can even use them to run more tasks, depending on the outcome of the original one. [See webhooks documentation](/platform/integrations/webhooks). +Webhooks are a feature that help keep you aware of what's happening with your tasks. You can set them up to inform you when a task starts, finishes, fails etc., or you can even use them to run more tasks, depending on the outcome of the original one. [See webhooks documentation](/integrations/webhooks). ### Information @@ -254,7 +254,7 @@ When a **Pseudo URL** is set, the scraper attempts to enqueue matching links on The `pageFunction` may only return nothing, `null`, `Object` or `Object[]`. If an `Object` is returned, it will be saved as a single result. Returning an `Array` of `Objects` will save each item in the array as a result. -The scraping results are saved in a [dataset](/platform/storage/dataset) (one of the tabs in the run console, as you may remember). It behaves like a table. Each item is a row in the table and its properties are its columns. Returning the following `Object`: +The scraping results are saved in a [dataset](/actors/storage/dataset) (one of the tabs in the run console, as you may remember). It behaves like a table. Each item is a row in the table and its properties are its columns. Returning the following `Object`: ```js async function pageFunction(context) { diff --git a/sources/academy/tutorials/apify_scrapers/puppeteer_scraper.md b/sources/academy/tutorials/apify_scrapers/puppeteer_scraper.md index 130713691a..16067dbb52 100644 --- a/sources/academy/tutorials/apify_scrapers/puppeteer_scraper.md +++ b/sources/academy/tutorials/apify_scrapers/puppeteer_scraper.md @@ -822,7 +822,7 @@ Thank you for reading this whole tutorial! Really! It's important to us that our ## What's next - Check out the [Apify SDK](https://docs.apify.com/sdk) and its [Getting started](https://docs.apify.com/sdk/js/docs/guides/apify-platform) tutorial if you'd like to try building your own Actors. It's a bit more complex and involved than writing a `pageFunction`, but it allows you to fine-tune all the details of your scraper to your liking. -- [Take a deep dive into Actors](/platform/actors), from how they work to [publishing](/platform/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. +- [Take a deep dive into Actors](/actors), from how they work to [publishing](/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. - Found out you're not into the coding part but would still to use Apify Actors? Check out our [ready-made solutions](https://apify.com/store) or [order a custom Actor](https://apify.com/contact-sales) from an Apify-certified developer. diff --git a/sources/academy/tutorials/apify_scrapers/web_scraper.md b/sources/academy/tutorials/apify_scrapers/web_scraper.md index 3b468e198f..7bdeb0fb75 100644 --- a/sources/academy/tutorials/apify_scrapers/web_scraper.md +++ b/sources/academy/tutorials/apify_scrapers/web_scraper.md @@ -556,7 +556,7 @@ Thank you for reading this whole tutorial! Really! It's important to us that our ## What's next - Check out the [Apify SDK](https://docs.apify.com/sdk) and its [Getting started](https://docs.apify.com/sdk/js/docs/guides/apify-platform) tutorial if you'd like to try building your own Actors. It's a bit more complex and involved than writing a `pageFunction`, but it allows you to fine-tune all the details of your scraper to your liking. -- [Take a deep dive into Actors](/platform/actors), from how they work to [publishing](/platform/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. +- [Take a deep dive into Actors](/actors), from how they work to [publishing](/actors/publishing) them in Apify Store, and even [making money](https://blog.apify.com/make-regular-passive-income-developing-web-automation-actors-b0392278d085/) on Actors. - Found out you're not into the coding part but would still to use Apify Actors? Check out our [ready-made solutions](https://apify.com/store) or [order a custom Actor](https://apify.com/contact-sales) from an Apify-certified developer. diff --git a/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md b/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md index 1ea20dea58..4e07241d20 100644 --- a/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md +++ b/sources/academy/tutorials/node_js/analyzing_pages_and_fixing_errors.md @@ -123,7 +123,7 @@ Logging and snapshotting are great tools but once you reach a certain run size, ## With the Apify SDK {#with-the-apify-sdk} -This example extends our snapshot solution above by creating a [named dataset](/platform/storage/usage#named-and-unnamed-storages) (named datasets have infinite retention), where we will accumulate error reports. Those reports will explain what happened and will link to a saved snapshot, so we can do a quick visual check. +This example extends our snapshot solution above by creating a [named dataset](/actors/storage/usage#named-and-unnamed-storages) (named datasets have infinite retention), where we will accumulate error reports. Those reports will explain what happened and will link to a saved snapshot, so we can do a quick visual check. ```js import { Actor } from 'apify'; diff --git a/sources/academy/tutorials/node_js/apify_free_google_serp_api.md b/sources/academy/tutorials/node_js/apify_free_google_serp_api.md index ac643b365b..7ed523d1f7 100644 --- a/sources/academy/tutorials/node_js/apify_free_google_serp_api.md +++ b/sources/academy/tutorials/node_js/apify_free_google_serp_api.md @@ -10,7 +10,7 @@ You need to regularly grab SERP data about your target keywords? Apify provides ![Apify Google SERP API](./images/gserp-api.png) -Hit `Save & Run` and you'll have the downloaded data as soon as the query finishes. To have it run at a regular frequency, you can set up the task to run on an [automatic schedule](/platform/schedules#setting-up-a-new-schedule). +Hit `Save & Run` and you'll have the downloaded data as soon as the query finishes. To have it run at a regular frequency, you can set up the task to run on an [automatic schedule](/actors/running/schedules#setting-up-a-new-schedule). To run from the API, send a [synchronous POST request](/api/v2/actor-task-run-sync-get-dataset-items-post) to an endpoint such as `https://api.apify.com/v2/acts/TASK_NAME_OR_ID/runs?token=YOUR_TOKEN`. Include any required input in a JSON object in the request's body. diff --git a/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md b/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md index 13fcdb4f4c..d6bfec8cc5 100644 --- a/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md +++ b/sources/academy/tutorials/node_js/filter_blocked_requests_using_sessions.md @@ -21,13 +21,13 @@ You want to crawl a website with a proxy pool, but most of your proxies are bloc 5. The proxies actually got banned before anyone used them to crawl the website because they use anti-bot protection that bans proxies across websites (e.g. Cloudflare). -Nobody can make sure that a proxy will work infinitely. The only real solution to this problem is to use [residential proxies](/platform/proxy/residential-proxy), but they can sometimes be too costly. +Nobody can make sure that a proxy will work infinitely. The only real solution to this problem is to use [residential proxies](/actors/proxy/residential-proxy), but they can sometimes be too costly. However, usually, at least some of our proxies work. To crawl successfully, it is therefore imperative to handle blocked requests properly. You first need to discover that you are blocked, which usually means that either your request returned status greater or equal to 400 (it didn't return the proper response) or that the page displayed a captcha. To ensure that this bad request is retried, you usually throw an error and it gets automatically retried later (our [SDK](/sdk/js/) handles this for you). Check out [this article](https://docs.apify.com/academy/node-js/handle-blocked-requests-puppeteer) as inspiration for how to handle this situation with `PuppeteerCrawler` class. ## Solution -Now we are able to retry bad requests and eventually unless all of our proxies get banned, we should be able to successfully crawl what we want. The problem is that it takes too long and our log is full of errors. Fortunately, we can overcome this with [proxy sessions](/platform/proxy/datacenter-proxy#username-parameters) (look at the proxy and SDK documentation for how to use them in your Actors.) +Now we are able to retry bad requests and eventually unless all of our proxies get banned, we should be able to successfully crawl what we want. The problem is that it takes too long and our log is full of errors. Fortunately, we can overcome this with [proxy sessions](/actors/proxy/datacenter-proxy#username-parameters) (look at the proxy and SDK documentation for how to use them in your Actors.) First we define `sessions`  object at the top of our code (in global scope) to hold the state of our working sessions. diff --git a/sources/academy/tutorials/node_js/scraping_from_sitemaps.md b/sources/academy/tutorials/node_js/scraping_from_sitemaps.md index 2e67ef3540..279acf55fb 100644 --- a/sources/academy/tutorials/node_js/scraping_from_sitemaps.md +++ b/sources/academy/tutorials/node_js/scraping_from_sitemaps.md @@ -104,7 +104,7 @@ const crawler = new PuppeteerCrawler({ ## Full code {#full-code} -If we create a new Actor using the code below on the [Apify platform](../../platform/apify_platform.md), it returns a nicely formatted spreadsheet containing a list of breweries with their beers with descriptions. +If we create a new Actor using the code below on the [Apify platform](../../apify_platform.md), it returns a nicely formatted spreadsheet containing a list of breweries with their beers with descriptions. Make sure to use the **apify/actor-node-puppeteer-chrome** image for your Dockerfile, otherwise the run will fail. diff --git a/sources/academy/tutorials/node_js/scraping_urls_list_from_google_sheets.md b/sources/academy/tutorials/node_js/scraping_urls_list_from_google_sheets.md index fa0c546a7d..a7fd2e84a7 100644 --- a/sources/academy/tutorials/node_js/scraping_urls_list_from_google_sheets.md +++ b/sources/academy/tutorials/node_js/scraping_urls_list_from_google_sheets.md @@ -5,7 +5,7 @@ sidebar_position: 15 slug: /node-js/scraping-urls-list-from-google-sheets --- -You can export URLs from [Google Sheets](https://workspace.google.com/products/sheets/) such as [this one](https://docs.google.com/spreadsheets/d/1-2mUcRAiBbCTVA5KcpFdEYWflLMLp9DDU3iJutvES4w) directly into an [Actor](/platform/actors)'s Start URLs field. +You can export URLs from [Google Sheets](https://workspace.google.com/products/sheets/) such as [this one](https://docs.google.com/spreadsheets/d/1-2mUcRAiBbCTVA5KcpFdEYWflLMLp9DDU3iJutvES4w) directly into an [Actor](/actors)'s Start URLs field. 1. Make sure the spreadsheet has one sheet and a simple structure to help the Actor find the URLs. diff --git a/sources/academy/tutorials/python/process_data_using_python.md b/sources/academy/tutorials/python/process_data_using_python.md index d6030597c2..5d144d1283 100644 --- a/sources/academy/tutorials/python/process_data_using_python.md +++ b/sources/academy/tutorials/python/process_data_using_python.md @@ -17,7 +17,7 @@ In this tutorial, we will use the Actor we created in the [previous tutorial](/a ## Processing previously scraped data -In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/storage/dataset) on the Apify platform. +In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/actors/storage/dataset) on the Apify platform. Now, we need to process the scraped data and make a visualization that will help us decide which location has the best weather, and will therefore become our next holiday destination. @@ -108,7 +108,7 @@ axes.legend(loc='best') axes.figure.tight_layout() ``` -As the last step, we need to save the plot to a record in a [key-value store](/platform/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. +As the last step, we need to save the plot to a record in a [key-value store](/actors/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. ```py # Get the resource sub-client for working with the default key-value store of the run diff --git a/sources/academy/tutorials/python/scrape_data_python.md b/sources/academy/tutorials/python/scrape_data_python.md index 440d296958..27cc46dfae 100644 --- a/sources/academy/tutorials/python/scrape_data_python.md +++ b/sources/academy/tutorials/python/scrape_data_python.md @@ -11,7 +11,7 @@ slug: /python/scrape-data-python Web scraping is not limited to the JavaScript world. The Python ecosystem contains some pretty powerful scraping tools as well. One of those is [Beautiful Soup](https://www.crummy.com/software/BeautifulSoup/), a library for parsing HTML and navigating or modifying of its DOM tree. -This tutorial shows you how to write a Python [Actor](../../platform/getting_started/actors.md) for scraping the weather forecast from [BBC Weather](https://www.bbc.com/weather) and process the scraped data using [Pandas](https://pandas.pydata.org/). +This tutorial shows you how to write a Python [Actor](../../getting_started/actors.md) for scraping the weather forecast from [BBC Weather](https://www.bbc.com/weather) and process the scraped data using [Pandas](https://pandas.pydata.org/). > In a rush? Skip this tutorial and get the [full code example](https://github.com/apify/apify-docs/tree/master/examples/python-data-scraper/). @@ -217,7 +217,7 @@ Earlier in this tutorial, we learned how to scrape data from the web in Python u ## Processing previously scraped data -In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/platform/storage/dataset) on the Apify platform. +In the previous tutorial, we set out to select our next holiday destination based on the forecast of the upcoming weather there. We have written an Actor that scrapes the BBC Weather forecast for the upcoming two weeks for three destinations: Prague, New York, and Honolulu. It then saves the scraped data to a [dataset](/actors/storage/dataset) on the Apify platform. Now, we need to process the scraped data and make a visualization that will help us decide which location has the best weather, and will therefore become our next holiday destination. @@ -308,7 +308,7 @@ axes.legend(loc='best') axes.figure.tight_layout() ``` -As the last step, we need to save the plot to a record in a [key-value store](/platform/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. +As the last step, we need to save the plot to a record in a [key-value store](/actors/storage/key-value-store) on the Apify platform, so that we can access it later. We save the rendered figure with the plot to an in-memory buffer, and then save the contents of that buffer to the default key-value store of the Actor run through its resource subclient. ```py # Get the resource sub-client for working with the default key-value store of the run diff --git a/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md b/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md index ccd82fa71c..613a6c6086 100644 --- a/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md +++ b/sources/academy/webscraping/advanced_web_scraping/crawling/crawling-with-search.md @@ -73,7 +73,7 @@ Some sites will allow you to construct non-overlapping ranges. For example, you Non-overlapping ranges should remove the possibility of duplicate products (unless a [listing has multiple values](#can-a-listing-have-more-values)) and the lowest number of pages. -If the website supports only overlapping ranges (e.g. **$0-$5**, **$5–10**), it is not a big problem. Only a small portion of the listings will be duplicates, and they can be removed using a [request queue](/platform/storage/request-queue). +If the website supports only overlapping ranges (e.g. **$0-$5**, **$5–10**), it is not a big problem. Only a small portion of the listings will be duplicates, and they can be removed using a [request queue](/actors/storage/request-queue). #### Can a listing have more values? {#can-a-listing-have-more-values} @@ -279,6 +279,6 @@ await crawler.addRequests(requestsToEnqueue); ## Summary {#summary} -And that's it. We have an elegant solution for a complicated problem. In a real project, you would want to make this a bit more robust and [save analytics data](../../../platform/expert_scraping_with_apify/saving_useful_stats.md). This will let you know what filters you went through and how many products each of them had. +And that's it. We have an elegant solution for a complicated problem. In a real project, you would want to make this a bit more robust and [save analytics data](../../../expert_scraping_with_apify/saving_useful_stats.md). This will let you know what filters you went through and how many products each of them had. Check out the [full code example](https://github.com/apify-projects/apify-extra-library/tree/master/examples/crawler-with-filters). diff --git a/sources/academy/webscraping/anti_scraping/index.md b/sources/academy/webscraping/anti_scraping/index.md index 45b081b50e..4a3a82071c 100644 --- a/sources/academy/webscraping/anti_scraping/index.md +++ b/sources/academy/webscraping/anti_scraping/index.md @@ -20,7 +20,7 @@ In development, it is crucial to check and adjust the configurations related to If you don't have time to read about the theory behind anti-scraping protections to fine-tune your scraping project and instead you need to get unblocked ASAP, here are some quick tips: -- Use high-quality proxies. [Residential proxies](/platform/proxy/residential-proxy) are the least blocked. You can find many providers out there like Apify, BrightData, Oxylabs, NetNut, etc. +- Use high-quality proxies. [Residential proxies](/actors/proxy/residential-proxy) are the least blocked. You can find many providers out there like Apify, BrightData, Oxylabs, NetNut, etc. - Set **real-user-like HTTP settings** and **browser fingerprints**. [Crawlee](https://crawlee.dev/) uses statistically generated realistic HTTP headers and browser fingerprints by default for all of its crawlers. - Use a browser to pass bot capture challenges. We recommend [Playwright with Firefox](https://crawlee.dev/docs/examples/playwright-crawler-firefox) because it is not that common for scraping. You can also play with [non-headless mode](https://crawlee.dev/api/playwright-crawler/interface/PlaywrightCrawlerOptions#headless) and adjust other [fingerprint settings](https://crawlee.dev/api/browser-pool/interface/FingerprintGeneratorOptions). - Consider extracting data from **[private APIs](../api_scraping/index.md)** or **mobile app APIs**. They are usually much less protected. diff --git a/sources/academy/webscraping/scraping_basics_legacy/best_practices.md b/sources/academy/webscraping/scraping_basics_legacy/best_practices.md index 04622d3d69..921baea653 100644 --- a/sources/academy/webscraping/scraping_basics_legacy/best_practices.md +++ b/sources/academy/webscraping/scraping_basics_legacy/best_practices.md @@ -93,7 +93,7 @@ When allowing your users to pass input properties which could break the scraper Validate the input provided by the user! This should be the very first thing your scraper does. If the fields in the input are missing or in an incorrect type/format, either parse the value and correct it programmatically or throw an informative error telling the user how to fix the error. -> On the Apify platform, you can use the [input schema](../../platform/deploying_your_code/input_schema.md) to both validate inputs and generate a clean UI for those using your scraper. +> On the Apify platform, you can use the [input schema](../../deploying_your_code/input_schema.md) to both validate inputs and generate a clean UI for those using your scraper. ## Error handling {#error-handling} diff --git a/sources/academy/webscraping/scraping_basics_legacy/challenge/index.md b/sources/academy/webscraping/scraping_basics_legacy/challenge/index.md index 8410611660..9375f7fc45 100644 --- a/sources/academy/webscraping/scraping_basics_legacy/challenge/index.md +++ b/sources/academy/webscraping/scraping_basics_legacy/challenge/index.md @@ -45,7 +45,7 @@ Our crawler's input will look like this: The goal at hand is to scrape all of the products from the first page of results for whatever keyword was provided (for our test case, it will be **iPhone**), then to scrape all available offers of each product and push the results to the dataset. For context, the offers for a product look like this: -![Amazon product offers](../../../platform/expert_scraping_with_apify/images/product-offers.jpg) +![Amazon product offers](../../../expert_scraping_with_apify/images/product-offers.jpg) In the end, we'd like our final output to look something like this: diff --git a/sources/academy/webscraping/scraping_basics_legacy/challenge/modularity.md b/sources/academy/webscraping/scraping_basics_legacy/challenge/modularity.md index b983a75419..c325fab58b 100644 --- a/sources/academy/webscraping/scraping_basics_legacy/challenge/modularity.md +++ b/sources/academy/webscraping/scraping_basics_legacy/challenge/modularity.md @@ -16,7 +16,7 @@ import LegacyAdmonition from '../../scraping_basics/_legacy.mdx'; Now that we've gotten our first request going, the first challenge is going to be selecting all of the resulting products on the page. Back in the browser, we'll use the DevTools hover tool to inspect a product. -![Result products](../../../platform/expert_scraping_with_apify/solutions/images/result-items.jpg) +![Result products](../../../expert_scraping_with_apify/solutions/images/result-items.jpg) **Bingo!** Each product seems to have a `data-asin` attribute, which includes the ASIN (product ID) data we want. Now, we can select each of these elements with this selector: `div > div[data-asin]:not([data-asin=""])`. Then, we'll scrape some data about each product, and push a request to the main product page so we can grab hold of the description. diff --git a/sources/academy/webscraping/scraping_basics_legacy/index.md b/sources/academy/webscraping/scraping_basics_legacy/index.md index 5c52b1ae54..5adca47aad 100644 --- a/sources/academy/webscraping/scraping_basics_legacy/index.md +++ b/sources/academy/webscraping/scraping_basics_legacy/index.md @@ -20,7 +20,7 @@ Welcome to **Web scraping basics for JavaScript devs**, a comprehensive, practic This course is made by [Apify](https://apify.com), the web scraping and automation platform, but we will use only open-source technologies throughout all academy lessons. This means that the skills you learn will be applicable to any scraping project, and you'll be able to run your scrapers on any computer. No Apify account needed. -If you would like to learn about the Apify platform and how it can help you build, run and scale your web scraping and automation projects, see the [Apify platform course](../../platform/apify_platform.md), where we'll teach you all about Apify serverless infrastructure, proxies, API, scheduling, webhooks and much more. +If you would like to learn about the Apify platform and how it can help you build, run and scale your web scraping and automation projects, see the [Apify platform course](../../apify_platform.md), where we'll teach you all about Apify serverless infrastructure, proxies, API, scheduling, webhooks and much more. ## Why learn scraper development {#why-learn} diff --git a/sources/platform/console/billing.md b/sources/platform/account/billing.md similarity index 99% rename from sources/platform/console/billing.md rename to sources/platform/account/billing.md index 0fab91cb8c..7285979657 100644 --- a/sources/platform/console/billing.md +++ b/sources/platform/account/billing.md @@ -3,7 +3,7 @@ title: Billing description: View invoices, track current billing cycle usage, manage subscriptions and limits, and review historical usage from the Billings page in Console. sidebar_position: 3 category: platform -slug: /console/billing +slug: /account/billing --- ## Current period diff --git a/sources/platform/account/collaboration/_category_.json b/sources/platform/account/collaboration/_category_.json new file mode 100644 index 0000000000..159095b5c7 --- /dev/null +++ b/sources/platform/account/collaboration/_category_.json @@ -0,0 +1 @@ +{ "label": "Collaboration", "position": 8, "collapsed": true, "collapsible": true } diff --git a/sources/platform/collaboration/access_rights.md b/sources/platform/account/collaboration/access_rights.md similarity index 97% rename from sources/platform/collaboration/access_rights.md rename to sources/platform/account/collaboration/access_rights.md index 2b0df3c6ed..9d46aa443f 100644 --- a/sources/platform/collaboration/access_rights.md +++ b/sources/platform/account/collaboration/access_rights.md @@ -3,7 +3,7 @@ title: Access rights description: Manage permissions for your private resources such as Actors, Actor runs, and storages. Allow other users to read, run, modify, or build new versions. sidebar_position: 12 category: platform -slug: /collaboration/access-rights +slug: /account/collaboration/access-rights --- You can securely share your resources with others by using a granular permissions system. Such resources include Actors, tasks, key-value stores, datasets, and request queues. diff --git a/sources/platform/collaboration/general-resource-access.md b/sources/platform/account/collaboration/general-resource-access.md similarity index 99% rename from sources/platform/collaboration/general-resource-access.md rename to sources/platform/account/collaboration/general-resource-access.md index e230f20803..beb2736967 100644 --- a/sources/platform/collaboration/general-resource-access.md +++ b/sources/platform/account/collaboration/general-resource-access.md @@ -3,7 +3,7 @@ title: General resource access description: Control how Apify resources are shared. Set default access to open ID-based access or restricted, and manage link sharing and pre-signed URLs. sidebar_position: 1 category: platform -slug: /collaboration/general-resource-access +slug: /account/collaboration/general-resource-access --- Some resources, like storages, Actor runs or Actor builds, can be shared simply by sending their unique resource ID or Console link and the recipient can then view the data in Console or fetch it via API without needing an API token. This is very useful for ad-hoc collaboration, integrating third party tools that connect to data in your Apify account or quick prototypes. @@ -305,7 +305,7 @@ const recordUrl = await storeClient.getRecordPublicUrl(recordKey); await Actor.pushData({ recordUrl }); ``` -To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +To learn more about generating pre-signed URLs, refer to the section [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls). :::note Using Console URLs diff --git a/sources/platform/collaboration/images/general-resouce-access/account-setting.png b/sources/platform/account/collaboration/images/general-resouce-access/account-setting.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/account-setting.png rename to sources/platform/account/collaboration/images/general-resouce-access/account-setting.png diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png b/sources/platform/account/collaboration/images/general-resouce-access/copy-record-url-kv-store.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/copy-record-url-kv-store.png rename to sources/platform/account/collaboration/images/general-resouce-access/copy-record-url-kv-store.png diff --git a/sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png b/sources/platform/account/collaboration/images/general-resouce-access/copy-shareable-link.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/copy-shareable-link.png rename to sources/platform/account/collaboration/images/general-resouce-access/copy-shareable-link.png diff --git a/sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png b/sources/platform/account/collaboration/images/general-resouce-access/creating-actor-issue.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/creating-actor-issue.png rename to sources/platform/account/collaboration/images/general-resouce-access/creating-actor-issue.png diff --git a/sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png b/sources/platform/account/collaboration/images/general-resouce-access/share-resource-dialog.png similarity index 100% rename from sources/platform/collaboration/images/general-resouce-access/share-resource-dialog.png rename to sources/platform/account/collaboration/images/general-resouce-access/share-resource-dialog.png diff --git a/sources/platform/collaboration/images/organizations/configure-permissions.png b/sources/platform/account/collaboration/images/organizations/configure-permissions.png similarity index 100% rename from sources/platform/collaboration/images/organizations/configure-permissions.png rename to sources/platform/account/collaboration/images/organizations/configure-permissions.png diff --git a/sources/platform/collaboration/images/organizations/convert-to-organization.png b/sources/platform/account/collaboration/images/organizations/convert-to-organization.png similarity index 100% rename from sources/platform/collaboration/images/organizations/convert-to-organization.png rename to sources/platform/account/collaboration/images/organizations/convert-to-organization.png diff --git a/sources/platform/collaboration/images/organizations/create-new-org.png b/sources/platform/account/collaboration/images/organizations/create-new-org.png similarity index 100% rename from sources/platform/collaboration/images/organizations/create-new-org.png rename to sources/platform/account/collaboration/images/organizations/create-new-org.png diff --git a/sources/platform/collaboration/images/organizations/integrations.png b/sources/platform/account/collaboration/images/organizations/integrations.png similarity index 100% rename from sources/platform/collaboration/images/organizations/integrations.png rename to sources/platform/account/collaboration/images/organizations/integrations.png diff --git a/sources/platform/collaboration/images/organizations/members.png b/sources/platform/account/collaboration/images/organizations/members.png similarity index 100% rename from sources/platform/collaboration/images/organizations/members.png rename to sources/platform/account/collaboration/images/organizations/members.png diff --git a/sources/platform/collaboration/images/organizations/my-organizations.png b/sources/platform/account/collaboration/images/organizations/my-organizations.png similarity index 100% rename from sources/platform/collaboration/images/organizations/my-organizations.png rename to sources/platform/account/collaboration/images/organizations/my-organizations.png diff --git a/sources/platform/collaboration/images/organizations/roles.png b/sources/platform/account/collaboration/images/organizations/roles.png similarity index 100% rename from sources/platform/collaboration/images/organizations/roles.png rename to sources/platform/account/collaboration/images/organizations/roles.png diff --git a/sources/platform/collaboration/images/organizations/switch-to-organization.png b/sources/platform/account/collaboration/images/organizations/switch-to-organization.png similarity index 100% rename from sources/platform/collaboration/images/organizations/switch-to-organization.png rename to sources/platform/account/collaboration/images/organizations/switch-to-organization.png diff --git a/sources/platform/collaboration/images/share-actor.svg b/sources/platform/account/collaboration/images/share-actor.svg similarity index 100% rename from sources/platform/collaboration/images/share-actor.svg rename to sources/platform/account/collaboration/images/share-actor.svg diff --git a/sources/platform/collaboration/index.md b/sources/platform/account/collaboration/index.md similarity index 77% rename from sources/platform/collaboration/index.md rename to sources/platform/account/collaboration/index.md index 3c7b4c4272..966790d427 100644 --- a/sources/platform/collaboration/index.md +++ b/sources/platform/account/collaboration/index.md @@ -1,9 +1,9 @@ --- title: Collaboration description: Learn how to collaborate with other users and manage permissions for organizations or private resources such as Actors, Actor runs, and storages. -sidebar_position: 12 +sidebar_position: 0 category: platform -slug: /collaboration +slug: /account/collaboration --- Apify was built from the ground up as a collaborative platform. Whether you’re publishing your Actor in Apify Store or sharing a dataset with a teammate, collaboration is deeply integrated into how Apify works. You can share your resources (like Actors, runs, or storages) with others, manage permissions, or invite collaborators to your organization. By default, each system resource you create is only available to you, the owner. However, you can grant access to other users, making it easy to collaborate effectively and securely. @@ -21,19 +21,19 @@ You can control access to your resources in four ways: - + - - + + - + - - + +
Access rightsAccess rights Enables you to grant access to another user for a certain resource you own. This way, you can share results with your client, or two engineers can collaborate on developing one Actor.
Share resources by linkCertain resources (runs, builds and storages) can by shared just by their link. Anyone with their ID is able to access them. This is configurable via General resource accessShare resources by linkCertain resources (runs, builds and storages) can by shared just by their link. Anyone with their ID is able to access them. This is configurable via General resource access
Organization accountOrganization account Apify's organization account allows multiple engineers to collaborate on team projects with role-specific access permissions.
Publishing in Apify StoreAnother way to share your Actor with other users is to publish it in Apify Store. When publishing your Actor, you can make it a Paid Actor and get paid by the users benefiting from your tool. For more information, read the publishing and monetization section.Publishing in Apify StoreAnother way to share your Actor with other users is to publish it in Apify Store. When publishing your Actor, you can make it a Paid Actor and get paid by the users benefiting from your tool. For more information, read the publishing and monetization section.
diff --git a/sources/platform/collaboration/list_of_permissions.md b/sources/platform/account/collaboration/list_of_permissions.md similarity index 99% rename from sources/platform/collaboration/list_of_permissions.md rename to sources/platform/account/collaboration/list_of_permissions.md index 02a6ed1e54..3c38a11862 100644 --- a/sources/platform/collaboration/list_of_permissions.md +++ b/sources/platform/account/collaboration/list_of_permissions.md @@ -2,7 +2,7 @@ title: List of permissions description: Learn about the access rights you can grant to other users. See a list of all access options for Apify resources such as Actors, Actor runs/tasks and storage. sidebar_position: 12.2 -slug: /collaboration/list-of-permissions +slug: /account/collaboration/list-of-permissions --- This document contains all the access options that can be granted to resources on the Apify platform. diff --git a/sources/platform/account/collaboration/organization/_category_.json b/sources/platform/account/collaboration/organization/_category_.json new file mode 100644 index 0000000000..17d5259a7c --- /dev/null +++ b/sources/platform/account/collaboration/organization/_category_.json @@ -0,0 +1 @@ +{ "label": "Organization", "collapsed": true, "collapsible": true } diff --git a/sources/platform/collaboration/organization_account/how_to_use.md b/sources/platform/account/collaboration/organization/how_to_use.md similarity index 98% rename from sources/platform/collaboration/organization_account/how_to_use.md rename to sources/platform/account/collaboration/organization/how_to_use.md index 6dab78b62b..d17a9e0828 100644 --- a/sources/platform/collaboration/organization_account/how_to_use.md +++ b/sources/platform/account/collaboration/organization/how_to_use.md @@ -2,7 +2,7 @@ title: Using the organization account description: Learn to use and manage your organization account using Apify Console or the Apify API. View the organizations you are in and manage your memberships. sidebar_position: 2 -slug: /collaboration/organization-account/how-to-use +slug: /account/collaboration/organization/how-to-use sidebar_label: How to use --- diff --git a/sources/platform/collaboration/organization_account/index.md b/sources/platform/account/collaboration/organization/index.md similarity index 98% rename from sources/platform/collaboration/organization_account/index.md rename to sources/platform/account/collaboration/organization/index.md index 8310cb147c..b8e968abf1 100644 --- a/sources/platform/collaboration/organization_account/index.md +++ b/sources/platform/account/collaboration/organization/index.md @@ -1,8 +1,8 @@ --- title: Organization account description: Create a specialized account for your organization to encourage collaboration and manage permissions. Convert an existing account, or create one from scratch. -sidebar_position: 12.1 -slug: /collaboration/organization-account +sidebar_position: 0 +slug: /account/collaboration/organization --- Organization accounts allow groups to collaborate on projects. It enables you to manage your team members' [permissions](../list_of_permissions.md) and to centralize your billing without having to share the credentials of a single personal account. diff --git a/sources/platform/collaboration/organization_account/setup.md b/sources/platform/account/collaboration/organization/setup.md similarity index 98% rename from sources/platform/collaboration/organization_account/setup.md rename to sources/platform/account/collaboration/organization/setup.md index f5807b07d1..aa177b7402 100644 --- a/sources/platform/collaboration/organization_account/setup.md +++ b/sources/platform/account/collaboration/organization/setup.md @@ -2,7 +2,7 @@ title: Setup description: Configure your organization account by inviting new members and assigning their roles. Manage team members' access permissions to the organization's resources. sidebar_position: 1 -slug: /collaboration/organization-account/setup +slug: /account/collaboration/organization/setup --- After creating your organization, you can configure its settings. The **Account** tab allows you to: diff --git a/sources/platform/console/index.md b/sources/platform/account/console.md similarity index 71% rename from sources/platform/console/index.md rename to sources/platform/account/console.md index 09ca5868bf..e1af167c29 100644 --- a/sources/platform/console/index.md +++ b/sources/platform/account/console.md @@ -3,7 +3,7 @@ title: Apify Console description: "Get started with Apify Console: create an account, sign in with email, Google, or GitHub, and manage your web scraping projects from one place." sidebar_position: 1 category: platform -slug: /console +slug: /account/console --- [Apify Console](https://console.apify.com) is a web application where you can manage all your Apify projects and resources. @@ -59,17 +59,17 @@ To navigate Apify Console, use the left-side panel or keyboard shortcuts. | Section | Keyboard shortcut | Description | | :--- | :--- | :--- | -| [Apify Store](/platform/console/store) | G + O | Search for Actors that suit your web-scraping needs. | -| [Dashboard](/platform/console) | G + H | Overview of your account with recently viewed Actors, suggestions, and recent runs. | -| [Actors](/platform/actors) | G + A | View recent and bookmarked Actors. | -| [Runs](/platform/actors/running/runs-and-builds) | G + R | View your recent runs. | -| [Saved tasks](/platform/actors/running/tasks) | G + T | View your saved tasks. | -| [Integrations](/platform/integrations) | G + I | View your integrations. | -| [Schedules](/platform/schedules) | G + U | Schedule Actor runs and tasks to run at a specified time. | -| [Development](/platform/actors/development) | G + D | • **My Actors** - see Actors developed by you.
• **Insights** - see analytics for your Actors.
• **Messaging** - check reported issues or send emails to users of your Actors. | -| [Proxy](/platform/proxy) | G + P | View your proxy usage and credentials. | -| [Storage](/platform/storage) | G + E | View stored results of your runs in various data formats. | -| [Billing](/platform/console/billing) | G + B | View billing information, statistics, and invoices. | -| [Settings](/platform/console/settings) | G + S | Change settings of your account. | +| [Apify Store](/account/store) | G + O | Search for Actors that suit your web-scraping needs. | +| [Dashboard](/account/console) | G + H | Overview of your account with recently viewed Actors, suggestions, and recent runs. | +| [Actors](/actors) | G + A | View recent and bookmarked Actors. | +| [Runs](/actors/running/runs-and-builds) | G + R | View your recent runs. | +| [Saved tasks](/actors/running/tasks) | G + T | View your saved tasks. | +| [Integrations](/integrations) | G + I | View your integrations. | +| [Schedules](/actors/running/schedules) | G + U | Schedule Actor runs and tasks to run at a specified time. | +| [Development](/actors/development) | G + D | • **My Actors** - see Actors developed by you.
• **Insights** - see analytics for your Actors.
• **Messaging** - check reported issues or send emails to users of your Actors. | +| [Proxy](/actors/proxy) | G + P | View your proxy usage and credentials. | +| [Storage](/actors/storage) | G + E | View stored results of your runs in various data formats. | +| [Billing](/account/billing) | G + B | View billing information, statistics, and invoices. | +| [Settings](/account/settings) | G + S | Change settings of your account. | To view all keyboard shortcuts, press Shift + ?. diff --git a/sources/platform/console/images/console-account-two-factor-disabled.png b/sources/platform/account/images/console-account-two-factor-disabled.png similarity index 100% rename from sources/platform/console/images/console-account-two-factor-disabled.png rename to sources/platform/account/images/console-account-two-factor-disabled.png diff --git a/sources/platform/console/images/console-account-two-factor-enabled.png b/sources/platform/account/images/console-account-two-factor-enabled.png similarity index 100% rename from sources/platform/console/images/console-account-two-factor-enabled.png rename to sources/platform/account/images/console-account-two-factor-enabled.png diff --git a/sources/platform/console/images/console-billing-current-period.png b/sources/platform/account/images/console-billing-current-period.png similarity index 100% rename from sources/platform/console/images/console-billing-current-period.png rename to sources/platform/account/images/console-billing-current-period.png diff --git a/sources/platform/console/images/console-billing-historical-usage-by-actors.png b/sources/platform/account/images/console-billing-historical-usage-by-actors.png similarity index 100% rename from sources/platform/console/images/console-billing-historical-usage-by-actors.png rename to sources/platform/account/images/console-billing-historical-usage-by-actors.png diff --git a/sources/platform/console/images/console-billing-historical-usage.png b/sources/platform/account/images/console-billing-historical-usage.png similarity index 100% rename from sources/platform/console/images/console-billing-historical-usage.png rename to sources/platform/account/images/console-billing-historical-usage.png diff --git a/sources/platform/console/images/console-billing-invoices.png b/sources/platform/account/images/console-billing-invoices.png similarity index 100% rename from sources/platform/console/images/console-billing-invoices.png rename to sources/platform/account/images/console-billing-invoices.png diff --git a/sources/platform/console/images/console-billing-limits.png b/sources/platform/account/images/console-billing-limits.png similarity index 100% rename from sources/platform/console/images/console-billing-limits.png rename to sources/platform/account/images/console-billing-limits.png diff --git a/sources/platform/console/images/console-billing-pricing.png b/sources/platform/account/images/console-billing-pricing.png similarity index 100% rename from sources/platform/console/images/console-billing-pricing.png rename to sources/platform/account/images/console-billing-pricing.png diff --git a/sources/platform/console/images/console-billing-subscription.png b/sources/platform/account/images/console-billing-subscription.png similarity index 100% rename from sources/platform/console/images/console-billing-subscription.png rename to sources/platform/account/images/console-billing-subscription.png diff --git a/sources/platform/console/images/console-login.png b/sources/platform/account/images/console-login.png similarity index 100% rename from sources/platform/console/images/console-login.png rename to sources/platform/account/images/console-login.png diff --git a/sources/platform/console/images/console-setup-two-factor-auth-key.png b/sources/platform/account/images/console-setup-two-factor-auth-key.png similarity index 100% rename from sources/platform/console/images/console-setup-two-factor-auth-key.png rename to sources/platform/account/images/console-setup-two-factor-auth-key.png diff --git a/sources/platform/console/images/console-signup.png b/sources/platform/account/images/console-signup.png similarity index 100% rename from sources/platform/console/images/console-signup.png rename to sources/platform/account/images/console-signup.png diff --git a/sources/platform/console/images/console-two-factor-app-setup.png b/sources/platform/account/images/console-two-factor-app-setup.png similarity index 100% rename from sources/platform/console/images/console-two-factor-app-setup.png rename to sources/platform/account/images/console-two-factor-app-setup.png diff --git a/sources/platform/console/images/console-two-factor-auth-disable.png b/sources/platform/account/images/console-two-factor-auth-disable.png similarity index 100% rename from sources/platform/console/images/console-two-factor-auth-disable.png rename to sources/platform/account/images/console-two-factor-auth-disable.png diff --git a/sources/platform/console/images/console-two-factor-authentication.png b/sources/platform/account/images/console-two-factor-authentication.png similarity index 100% rename from sources/platform/console/images/console-two-factor-authentication.png rename to sources/platform/account/images/console-two-factor-authentication.png diff --git a/sources/platform/console/images/console-two-factor-recovery-settings-request.png b/sources/platform/account/images/console-two-factor-recovery-settings-request.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-settings-request.png rename to sources/platform/account/images/console-two-factor-recovery-settings-request.png diff --git a/sources/platform/console/images/console-two-factor-recovery-settings-revealed.png b/sources/platform/account/images/console-two-factor-recovery-settings-revealed.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-settings-revealed.png rename to sources/platform/account/images/console-two-factor-recovery-settings-revealed.png diff --git a/sources/platform/console/images/console-two-factor-recovery-setup.png b/sources/platform/account/images/console-two-factor-recovery-setup.png similarity index 100% rename from sources/platform/console/images/console-two-factor-recovery-setup.png rename to sources/platform/account/images/console-two-factor-recovery-setup.png diff --git a/sources/platform/console/images/console-two-factor-use-recovery-code.png b/sources/platform/account/images/console-two-factor-use-recovery-code.png similarity index 100% rename from sources/platform/console/images/console-two-factor-use-recovery-code.png rename to sources/platform/account/images/console-two-factor-use-recovery-code.png diff --git a/sources/platform/images/limits/usage-limits.png b/sources/platform/account/images/limits/usage-limits.png similarity index 100% rename from sources/platform/images/limits/usage-limits.png rename to sources/platform/account/images/limits/usage-limits.png diff --git a/sources/platform/images/security/soc2-logo.png b/sources/platform/account/images/security/soc2-logo.png similarity index 100% rename from sources/platform/images/security/soc2-logo.png rename to sources/platform/account/images/security/soc2-logo.png diff --git a/sources/platform/images/security/whitepaper-cover.png b/sources/platform/account/images/security/whitepaper-cover.png similarity index 100% rename from sources/platform/images/security/whitepaper-cover.png rename to sources/platform/account/images/security/whitepaper-cover.png diff --git a/sources/platform/account/index.mdx b/sources/platform/account/index.mdx new file mode 100644 index 0000000000..0e2ad5e234 --- /dev/null +++ b/sources/platform/account/index.mdx @@ -0,0 +1,50 @@ +--- +title: Account +description: Manage your Apify account, billing, security, organization, and access permissions. +sidebar_label: Overview +sidebar_position: 0 +slug: /account +--- + +import Card from "@site/src/components/Card"; +import CardGrid from "@site/src/components/CardGrid"; + +Manage your Apify account settings, billing, security, and team collaboration. + + + + + + + + + + diff --git a/sources/platform/limits.md b/sources/platform/account/limits.md similarity index 99% rename from sources/platform/limits.md rename to sources/platform/account/limits.md index bb856dd410..59ab091e2f 100644 --- a/sources/platform/limits.md +++ b/sources/platform/account/limits.md @@ -1,9 +1,9 @@ --- title: Limits description: View default resource limits for the Apify platform, including max memory, disk size, and number of Actors and tasks per user per plan tier. -sidebar_position: 16 +sidebar_position: 7 category: platform -slug: /limits +slug: /account/limits --- The tables below demonstrate the Apify platform's default resource limits. For API limits such as rate limits and max payload size, see the [API documentation](/api/v2#rate-limiting). diff --git a/sources/platform/security.md b/sources/platform/account/security.md similarity index 95% rename from sources/platform/security.md rename to sources/platform/account/security.md index 389b51a2fe..11bc327c62 100644 --- a/sources/platform/security.md +++ b/sources/platform/account/security.md @@ -1,9 +1,9 @@ --- title: Security description: Learn more about Apify's security practices and data protection measures that are used to protect your Actors, their data, and the Apify platform in general. -sidebar_position: 15 +sidebar_position: 5 category: platform -slug: /security +slug: /account/security --- ## SOC 2 type II compliance @@ -54,14 +54,14 @@ The following Apify-owned services and assets are eligible for security research #### Open source projects ([github.com/apify](https://github.com/apify)) - Crawlee: - - [JavaScript](https://github.com/apify/crawlee) - - [Python](https://github.com/apify/crawlee-python) + - [JavaScript](https://github.com/apify/crawlee) + - [Python](https://github.com/apify/crawlee-python) - Apify SDK: - - [JavaScript](https://github.com/apify/apify-sdk-js) - - [Python](https://github.com/apify/apify-sdk-python) + - [JavaScript](https://github.com/apify/apify-sdk-js) + - [Python](https://github.com/apify/apify-sdk-python) - Apify Client: - - [JavaScript](https://github.com/apify/apify-client-js) - - [Python](https://github.com/apify/apify-client-python) + - [JavaScript](https://github.com/apify/apify-client-js) + - [Python](https://github.com/apify/apify-client-python) #### Out-of-scope assets diff --git a/sources/platform/console/settings.md b/sources/platform/account/settings.md similarity index 99% rename from sources/platform/console/settings.md rename to sources/platform/account/settings.md index 66652dea21..007df73a26 100644 --- a/sources/platform/console/settings.md +++ b/sources/platform/account/settings.md @@ -3,7 +3,7 @@ title: Account settings description: Learn how to manage your Apify account, configure integrations, create and manage organizations, and set notification preferences in the Settings tab. sidebar_position: 4 category: platform -slug: /console/settings +slug: /account/settings --- ## Account diff --git a/sources/platform/console/store.md b/sources/platform/account/store.md similarity index 89% rename from sources/platform/console/store.md rename to sources/platform/account/store.md index bd9fa9ba4e..d2bfd46563 100644 --- a/sources/platform/console/store.md +++ b/sources/platform/account/store.md @@ -3,7 +3,7 @@ title: Apify Store description: Browse thousands of pre-built Actors in Apify Store, filter by category or pricing, and run them immediately or save settings for later use. sidebar_position: 2 category: platform -slug: /console/store +slug: /account/store --- [Apify Store](https://apify.com/store) is a place where you can explore a variety of Actors, both created and maintained by Apify or the community. @@ -18,4 +18,4 @@ You can also organize the results from the store by different criteria, includin Once you select an Actor from the store, you'll be directed to its specific page. Here, you can configure the settings for your future Actor run, save these configurations for later use, or run the Actor immediately. -For more information, see [Actors in Store](/sources/platform/actors/running/store.md). +For more information, see [Actors in Store](/sources/actors/running/store.md). diff --git a/sources/platform/console/two-factor-authentication.md b/sources/platform/account/two-factor-authentication.md similarity index 99% rename from sources/platform/console/two-factor-authentication.md rename to sources/platform/account/two-factor-authentication.md index 8d88532740..e0d15b7cca 100644 --- a/sources/platform/console/two-factor-authentication.md +++ b/sources/platform/account/two-factor-authentication.md @@ -1,9 +1,9 @@ --- title: Two-factor authentication setup description: Enable two-factor authentication on your Apify Console account using an authenticator app to add a second layer of security against unauthorized access. -sidebar_position: 5 +sidebar_position: 6 category: platform -slug: /console/two-factor-authentication +slug: /account/two-factor-authentication --- If you use your email and password to sign in to Apify Console, you can enable two-factor authentication for your account. This will add an extra layer of security to your account and prevent anyone who gains access to your password from signing in to your account. diff --git a/sources/platform/actors/development/_category_.json b/sources/platform/actors/development/_category_.json new file mode 100644 index 0000000000..08f66d3b36 --- /dev/null +++ b/sources/platform/actors/development/_category_.json @@ -0,0 +1 @@ +{ "label": "Develop", "position": 2, "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/actor_definition/_category_.json b/sources/platform/actors/development/actor_definition/_category_.json new file mode 100644 index 0000000000..269654f81b --- /dev/null +++ b/sources/platform/actors/development/actor_definition/_category_.json @@ -0,0 +1 @@ +{ "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/actor_definition/actor_json.md b/sources/platform/actors/development/actor_definition/actor_json.md index c8a42af095..c40a895ced 100644 --- a/sources/platform/actors/development/actor_definition/actor_json.md +++ b/sources/platform/actors/development/actor_definition/actor_json.md @@ -81,10 +81,10 @@ Actor `name`, `version`, `buildTag`, and `environmentVariables` are currently on | `dockerContextDir` | Optional | The path to the directory to be used as the Docker context when building the Actor. The path is relative to the location of the `actor.json` file. This property is useful for monorepos containing multiple Actors. Refer to the [Actor monorepos](../deployment/source_types.md#actor-monorepos) section for more details. | | `readme` | Optional | The path to the README file to be used on the platform. If not specified, the system will look for README files in the `.actor/README.md` and `README.md` paths, in that order of preference. Check out [Apify Marketing Playbook to learn how to write a quality README files](https://apify.notion.site/How-to-create-an-Actor-README-759a1614daa54bee834ee39fe4d98bc2) guidance. | | `input` | Optional | You can embed your [input schema](./input_schema/index.md) object directly in `actor.json` under the `input` field. You can also provide a path to a custom input schema. If not provided, the input schema at `.actor/INPUT_SCHEMA.json` or `INPUT_SCHEMA.json` is used, in this order of preference. You can also use the `inputSchema` alias interchangeably. | -| `output` | Optional | You can embed your [output schema](./output_schema/index.md) object directly in `actor.json` under the `output` field. You can also provide a path to a custom output schema. [Read more](/platform/actors/development/actor-definition/output-schema) about Actor output schemas. You can also use the `outputSchema` alias interchangeably. | +| `output` | Optional | You can embed your [output schema](./output_schema/index.md) object directly in `actor.json` under the `output` field. You can also provide a path to a custom output schema. [Read more](/actors/development/actor-definition/output-schema) about Actor output schemas. You can also use the `outputSchema` alias interchangeably. | | `changelog` | Optional | The path to the CHANGELOG file displayed in the Information tab of the Actor in Apify Console next to Readme. If not provided, the CHANGELOG at `.actor/CHANGELOG.md` or `CHANGELOG.md` is used, in this order of preference. Your Actor doesn't need to have a CHANGELOG but it is a good practice to keep it updated for published Actors. | -| `storages.dataset` | Optional | You can define the schema of the items in your dataset under the `storages.dataset` field. This can be either an embedded object or a path to a JSON schema file. [Read more](/platform/actors/development/actor-definition/dataset-schema) about Actor dataset schemas. | -| `storages.datasets` | Optional | You can define multiple datasets for the Actor under the `storages.datasets` field. This can be an object containing embedded objects or paths to a JSON schema files. [Read more](/platform/actors/development/actor-definition/dataset-schema/multiple-datasets) about multiple dataset schemas. | +| `storages.dataset` | Optional | You can define the schema of the items in your dataset under the `storages.dataset` field. This can be either an embedded object or a path to a JSON schema file. [Read more](/actors/development/actor-definition/dataset-schema) about Actor dataset schemas. | +| `storages.datasets` | Optional | You can define multiple datasets for the Actor under the `storages.datasets` field. This can be an object containing embedded objects or paths to a JSON schema files. [Read more](/actors/development/actor-definition/dataset-schema/multiple-datasets) about multiple dataset schemas. | | `defaultMemoryMbytes` | Optional | Specifies the default amount of memory in megabytes to be used when the Actor is started. Can be an integer or a [dynamic memory expression string](./dynamic_actor_memory/index.md). | | `minMemoryMbytes` | Optional | Specifies the minimum amount of memory in megabytes required by the Actor to run. Requires an _integer_ value. If both `minMemoryMbytes` and `maxMemoryMbytes` are set, then `minMemoryMbytes` must be equal or lower than `maxMemoryMbytes`. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. | | `maxMemoryMbytes` | Optional | Specifies the maximum amount of memory in megabytes required by the Actor to run. It can be used to control the costs of run. Requires an _integer_ value. Refer to the [Usage and resources](https://docs.apify.com/platform/actors/running/usage-and-resources#memory) for more details about memory allocation. | diff --git a/sources/platform/actors/development/actor_definition/dataset_schema/index.md b/sources/platform/actors/development/actor_definition/dataset_schema/index.md index b89bdd940d..3f4df42012 100644 --- a/sources/platform/actors/development/actor_definition/dataset_schema/index.md +++ b/sources/platform/actors/development/actor_definition/dataset_schema/index.md @@ -1,6 +1,6 @@ --- title: Dataset schema specification -sidebar_position: 5 +sidebar_position: 0 description: Define a dataset schema to control how your Actor output data is structured, validated, and displayed in Apify Console UI and API responses. slug: /actors/development/actor-definition/dataset-schema sidebar_label: Dataset schema diff --git a/sources/platform/actors/development/actor_definition/docker.md b/sources/platform/actors/development/actor_definition/docker.md index 18f8c48156..1f7032c02e 100644 --- a/sources/platform/actors/development/actor_definition/docker.md +++ b/sources/platform/actors/development/actor_definition/docker.md @@ -5,7 +5,7 @@ slug: /actors/development/actor-definition/dockerfile sidebar_position: 8 --- -When developing an [Actor](/sources/platform/actors/index.mdx) on the Apify platform, you can choose from a variety of pre-built Docker images to serve as the base for your Actor. These base images come with pre-installed dependencies and tools, making it easier to set up your development environment and ensuring consistent behavior across different environments. +When developing an [Actor](/sources/actors/index.mdx) on the Apify platform, you can choose from a variety of pre-built Docker images to serve as the base for your Actor. These base images come with pre-installed dependencies and tools, making it easier to set up your development environment and ensuring consistent behavior across different environments. ## Base Docker images diff --git a/sources/platform/actors/development/actor_definition/dynamic_actor_memory/index.md b/sources/platform/actors/development/actor_definition/dynamic_actor_memory/index.md index 89ce713ff9..a6df2a93de 100644 --- a/sources/platform/actors/development/actor_definition/dynamic_actor_memory/index.md +++ b/sources/platform/actors/development/actor_definition/dynamic_actor_memory/index.md @@ -1,7 +1,7 @@ --- title: Dynamic Actor memory description: Automatically adjust your Actor memory allocation based on input size and run options to optimize performance and reduce costs on every run. -sidebar_position: 9 +sidebar_position: 0 slug: /actors/development/actor-definition/dynamic-actor-memory --- diff --git a/sources/platform/actors/development/actor_definition/index.md b/sources/platform/actors/development/actor_definition/index.md index 6655f8c368..86e8f89ce8 100644 --- a/sources/platform/actors/development/actor_definition/index.md +++ b/sources/platform/actors/development/actor_definition/index.md @@ -1,6 +1,6 @@ --- title: Actor definition -sidebar_position: 3 +sidebar_position: 0 description: Learn how to define an Actor by adding a .actor directory with actor.json, a Dockerfile, README, and input schema files to your source code. slug: /actors/development/actor-definition --- @@ -14,12 +14,12 @@ Actors have the following elements: - The main **[actor.json](./actor_json.md)** file contains **metadata** such as the Actor name, description, author, version, and links pointing to the other definition files below. - **[Dockerfile](./docker.md)** which specifies where is the Actor's source code, how to build it, and run it. - **Documentation** in the form of a **README.md** file. -- **[Input](./input_schema/index.md)** and **[dataset schemas](/platform/actors/development/actor-definition/dataset-schema)** that describe what input the Actor requires and what results it produces. +- **[Input](./input_schema/index.md)** and **[dataset schemas](/actors/development/actor-definition/dataset-schema)** that describe what input the Actor requires and what results it produces. - Access to an out-of-box **[storage](../../../storage/index.md)** system for Actor data, results, and files. The documentation and the input/dataset schemas make it possible for people to easily understand what the Actor does, enter the required inputs both in the user interface or API, and integrate the Actor's results with their other workflows. Actors can easily call and interact with each other, enabling building more complex systems on top of simple ones. -The Apify platform provides an open [API](/api/v2), cron-style [scheduler](../../schedules), [webhooks](../../../integrations/programming/webhooks/index.md), and [integrations](../../integrations) to services such as Zapier or Make, which make it easy for users to integrate Actors with their existing workflows. Anyone is welcome to [publish Actors](/platform/actors/publishing) in [Apify Store](https://apify.com/store), and you can even [monetize your Actors](/platform/actors/publishing/monetize). +The Apify platform provides an open [API](/api/v2), cron-style [scheduler](../../schedules), [webhooks](../../../integrations/programming/webhooks/index.md), and [integrations](../../integrations) to services such as Zapier or Make, which make it easy for users to integrate Actors with their existing workflows. Anyone is welcome to [publish Actors](/actors/publishing) in [Apify Store](https://apify.com/store), and you can even [monetize your Actors](/actors/publishing/monetize). Actors can be developed and run locally and then easily deployed to the Apify platform using the [Apify CLI](/cli) or a [GitHub integration](../../../integrations/programming/github.md). For more details, see the [Deployment](../deployment/index.md) section. diff --git a/sources/platform/actors/development/actor_definition/input_schema/index.md b/sources/platform/actors/development/actor_definition/input_schema/index.md index e27f65fcb6..04d885e913 100644 --- a/sources/platform/actors/development/actor_definition/input_schema/index.md +++ b/sources/platform/actors/development/actor_definition/input_schema/index.md @@ -1,6 +1,6 @@ --- title: Actor input schema -sidebar_position: 3 +sidebar_position: 0 description: Learn how to define and validate a schema for your Actor's input with code examples. Provide an autogenerated input UI for your Actor's users. slug: /actors/development/actor-definition/input-schema --- diff --git a/sources/platform/actors/development/actor_definition/key_value_store_schema/index.md b/sources/platform/actors/development/actor_definition/key_value_store_schema/index.md index de94055476..d12f5384a2 100644 --- a/sources/platform/actors/development/actor_definition/key_value_store_schema/index.md +++ b/sources/platform/actors/development/actor_definition/key_value_store_schema/index.md @@ -1,7 +1,7 @@ --- title: Key-value store schema specification sidebar_label: Key-value store schema -sidebar_position: 6 +sidebar_position: 0 description: Define a key-value store schema to organize records into named collections with content type validation, making Actor output easier to navigate and browse. slug: /actors/development/actor-definition/key-value-store-schema --- diff --git a/sources/platform/actors/development/actor_definition/output_schema/index.md b/sources/platform/actors/development/actor_definition/output_schema/index.md index 96694a4d10..f1dc1bcc98 100644 --- a/sources/platform/actors/development/actor_definition/output_schema/index.md +++ b/sources/platform/actors/development/actor_definition/output_schema/index.md @@ -1,12 +1,12 @@ --- title: Actor output schema sidebar_label: Actor output schema -sidebar_position: 4 +sidebar_position: 0 description: Define an output schema to specify where your Actor stores its results and how Apify Console and the Actor run API endpoint display them to users. slug: /actors/development/actor-definition/output-schema --- -The Actor output schema builds upon the schemas for the [dataset](/platform/actors/development/actor-definition/dataset-schema) and [key-value store](/platform/actors/development/actor-definition/key-value-store-schema). It specifies where an Actor stores its output and defines templates for accessing that output. Apify Console uses these output definitions to display run results, and the Actor run's `GET` endpoint includes them in the output property. +The Actor output schema builds upon the schemas for the [dataset](/actors/development/actor-definition/dataset-schema) and [key-value store](/actors/development/actor-definition/key-value-store-schema). It specifies where an Actor stores its output and defines templates for accessing that output. Apify Console uses these output definitions to display run results, and the Actor run's `GET` endpoint includes them in the output property. ## Why output schema matters @@ -263,7 +263,7 @@ After you define `views` and `collections` in `dataset_schema.json` and `key_val :::note Output schema complements dataset schema -The output schema defines *where* data is stored and how to access it. The [dataset schema](/platform/actors/development/actor-definition/dataset-schema) defines *what* fields each item contains, including descriptions and examples. Use both schemas together: +The output schema defines *where* data is stored and how to access it. The [dataset schema](/actors/development/actor-definition/dataset-schema) defines *what* fields each item contains, including descriptions and examples. Use both schemas together: - Output schema: Declares that results are in the default dataset - Dataset schema: Describes each field with `title`, `description`, and `example` diff --git a/sources/platform/actors/development/actor_definition/web_server_schema/index.md b/sources/platform/actors/development/actor_definition/web_server_schema/index.md index cf13896e1b..8799040999 100644 --- a/sources/platform/actors/development/actor_definition/web_server_schema/index.md +++ b/sources/platform/actors/development/actor_definition/web_server_schema/index.md @@ -1,12 +1,12 @@ --- title: Web server schema sidebar_label: Web server schema -sidebar_position: 7 +sidebar_position: 0 description: Attach an OpenAPI specification to your Actor to enable the interactive Standby tab in Apify Console and Apify Store, where you can browse and test endpoints. slug: /actors/development/actor-definition/web-server-schema --- -The `webServerSchema` field in `.actor/actor.json` attaches an [OpenAPI 3.x](https://spec.openapis.org/oas/v3.0.3) specification to your Actor. You can define the schema for any Actor that exposes an HTTP server. When you enable [standby mode](/platform/actors/development/programming-interface/standby), Apify Console and Apify Store render an interactive **Standby** tab on the Actor's detail page. From there you can browse endpoints, inspect request and response schemas, and send requests directly from the browser. +The `webServerSchema` field in `.actor/actor.json` attaches an [OpenAPI 3.x](https://spec.openapis.org/oas/v3.0.3) specification to your Actor. You can define the schema for any Actor that exposes an HTTP server. When you enable [standby mode](/actors/development/programming-interface/standby), Apify Console and Apify Store render an interactive **Standby** tab on the Actor's detail page. From there you can browse endpoints, inspect request and response schemas, and send requests directly from the browser. ![Apify Console showing the Standby tab with the Endpoints section rendered from the Actor's OpenAPI spec](../images/console-standby-openapi-swagger.png) @@ -90,9 +90,9 @@ Follow the standard [OpenAPI 3.x format](https://spec.openapis.org/oas/latest.ht ## Build and deploy -The build process validates `webServerSchema`, similar to other Actor schemas like [input schema](/platform/actors/development/actor-definition/input-schema) and [dataset schema](/platform/actors/development/actor-definition/dataset-schema). If the spec is malformed, the build fails with a validation error. +The build process validates `webServerSchema`, similar to other Actor schemas like [input schema](/actors/development/actor-definition/input-schema) and [dataset schema](/actors/development/actor-definition/dataset-schema). If the spec is malformed, the build fails with a validation error. -Once deployed, the **Standby** tab appears automatically on the Actor's detail page when you enable [standby mode](/platform/actors/development/programming-interface/standby). It renders your spec with [Swagger UI](https://swagger.io/tools/swagger-ui/) and handles authentication automatically - Actor users can send requests without configuring API tokens. +Once deployed, the **Standby** tab appears automatically on the Actor's detail page when you enable [standby mode](/actors/development/programming-interface/standby). It renders your spec with [Swagger UI](https://swagger.io/tools/swagger-ui/) and handles authentication automatically - Actor users can send requests without configuring API tokens. :::note Servers field is overwritten @@ -104,5 +104,5 @@ Your `servers` array is replaced with the Actor's standby URL at display time. C | Field | Description | | --- | --- | -| `usesStandbyMode` | Must be `true` for the **Standby** tab to appear. See [standby mode](/platform/actors/development/programming-interface/standby). | -| `webServerSchema` | The OpenAPI spec that powers the **Standby** tab. Defined in [`.actor/actor.json`](/platform/actors/development/actor-definition/actor-json) as an inline object or a path to a JSON file. | +| `usesStandbyMode` | Must be `true` for the **Standby** tab to appear. See [standby mode](/actors/development/programming-interface/standby). | +| `webServerSchema` | The OpenAPI spec that powers the **Standby** tab. Defined in [`.actor/actor.json`](/actors/development/actor-definition/actor-json) as an inline object or a path to a JSON file. | diff --git a/sources/platform/actors/development/builds_and_runs/_category_.json b/sources/platform/actors/development/builds_and_runs/_category_.json new file mode 100644 index 0000000000..269654f81b --- /dev/null +++ b/sources/platform/actors/development/builds_and_runs/_category_.json @@ -0,0 +1 @@ +{ "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/builds_and_runs/index.md b/sources/platform/actors/development/builds_and_runs/index.md index cd2447f839..5eea51e378 100644 --- a/sources/platform/actors/development/builds_and_runs/index.md +++ b/sources/platform/actors/development/builds_and_runs/index.md @@ -1,6 +1,6 @@ --- title: Builds and runs -sidebar_position: 7 +sidebar_position: 0 description: Learn about Actor builds and runs, including how Docker images are created, how runs are executed, and their lifecycle on the Apify platform. slug: /actors/development/builds-and-runs --- diff --git a/sources/platform/actors/development/deployment/_category_.json b/sources/platform/actors/development/deployment/_category_.json new file mode 100644 index 0000000000..269654f81b --- /dev/null +++ b/sources/platform/actors/development/deployment/_category_.json @@ -0,0 +1 @@ +{ "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/deployment/continuous_integration.md b/sources/platform/actors/development/deployment/continuous_integration.md index 7bf0995881..7894fe8be3 100644 --- a/sources/platform/actors/development/deployment/continuous_integration.md +++ b/sources/platform/actors/development/deployment/continuous_integration.md @@ -161,4 +161,4 @@ Now your Actor will automatically rebuild on every push to the GitHub repository Setting up continuous integration (CI) for your Apify Actors ensures that CI automatically tests and builds your code whenever you push changes to your repository. This helps catch issues early and streamlines your deployment process, whether you're releasing to production or maintaining a beta branch. -You can also integrate directly with GitHub, check out the [official Apify GitHub integration documentation](/platform/integrations/github). +You can also integrate directly with GitHub, check out the [official Apify GitHub integration documentation](/integrations/github). diff --git a/sources/platform/actors/development/deployment/index.md b/sources/platform/actors/development/deployment/index.md index d14cf0c5db..1ccb5d5110 100644 --- a/sources/platform/actors/development/deployment/index.md +++ b/sources/platform/actors/development/deployment/index.md @@ -1,11 +1,11 @@ --- title: Deployment -sidebar_position: 6 +sidebar_position: 0 description: Learn how to deploy your Actor to the Apify platform using the Apify CLI or the console, and how to trigger new builds from a Git repository. slug: /actors/development/deployment --- -Deploying an Actor involves uploading your [source code](/platform/actors/development/actor-definition) and [building](/platform/actors/development/builds-and-runs/builds) it on the Apify platform. Once deployed, you can run and scale your Actor in the cloud. +Deploying an Actor involves uploading your [source code](/actors/development/actor-definition) and [building](/actors/development/builds-and-runs/builds) it on the Apify platform. Once deployed, you can run and scale your Actor in the cloud. ## Deploy using the Apify CLI diff --git a/sources/platform/actors/development/deployment/source_types.md b/sources/platform/actors/development/deployment/source_types.md index fa3d535123..e0731b1aea 100644 --- a/sources/platform/actors/development/deployment/source_types.md +++ b/sources/platform/actors/development/deployment/source_types.md @@ -17,11 +17,11 @@ This section explains the various sources types available for Apify Actors and h ## Web IDE -This is the default option when your Actor's source code is hosted on the Apify platform. It offers quick previews and updates to your source code, easy file and directory browsing, and direct testing of the [`INPUT_SCHEMA.json`](/platform/actors/development/actor-definition/input-schema) on the Apify platform. +This is the default option when your Actor's source code is hosted on the Apify platform. It offers quick previews and updates to your source code, easy file and directory browsing, and direct testing of the [`INPUT_SCHEMA.json`](/actors/development/actor-definition/input-schema) on the Apify platform. A `Dockerfile` is mandatory for all Actors. When using the default NodeJS Dockerfile, you'll typically need `main.js` for your source code and `package.json` for [npm](https://www.npmjs.com/) package configurations. -For more information on creating custom Dockerfiles or using Apify's base images, refer to the [Dockerfile](/platform/actors/development/actor-definition/dockerfile#custom-dockerfile) and [base Docker images](/platform/actors/development/actor-definition/dockerfile#base-docker-images) documentation. +For more information on creating custom Dockerfiles or using Apify's base images, refer to the [Dockerfile](/actors/development/actor-definition/dockerfile#custom-dockerfile) and [base Docker images](/actors/development/actor-definition/dockerfile#base-docker-images) documentation. ## Git repository @@ -35,7 +35,7 @@ To use a specific directory, add it after the branch/tag, separated by a colon ( :::note GitHub integration -You can easily set up an integration where the Actor is automatically rebuilt on every commit to the Git repository. For more details, see [GitHub integration](/platform/integrations/github). +You can easily set up an integration where the Actor is automatically rebuilt on every commit to the Git repository. For more details, see [GitHub integration](/integrations/github). ::: @@ -69,7 +69,7 @@ Remember that each key can only be used once per Git hosting service (GitHub, Bi ### Actor monorepos -To manage multiple Actors in a single repository, use the `dockerContextDir` property in the [Actor definition](/platform/actors/development/actor-definition/actor-json) to set the Docker context directory (if not provided then the repository root is used). In the Dockerfile, copy both the Actor's source and any shared code into the Docker image. +To manage multiple Actors in a single repository, use the `dockerContextDir` property in the [Actor definition](/actors/development/actor-definition/actor-json) to set the Docker context directory (if not provided then the repository root is used). In the Dockerfile, copy both the Actor's source and any shared code into the Docker image. To enable sharing Dockerfiles between multiple Actors, the Actor build process passes the `ACTOR_PATH_IN_DOCKER_CONTEXT` build argument to the Docker build. It contains the relative path from `dockerContextDir` to the directory selected as the root of the Actor in Apify Console (the "directory" part of the Actor's git URL). diff --git a/sources/platform/actors/development/index.md b/sources/platform/actors/development/index.md index 3aa5b3b5d6..2d8470522d 100644 --- a/sources/platform/actors/development/index.md +++ b/sources/platform/actors/development/index.md @@ -2,13 +2,13 @@ title: Actor development description: Read about the technical part of building Apify Actors. Learn to define Actor inputs, build new versions, persist Actor state, and choose base Docker images. sidebar_label: Development -sidebar_position: 7.4 +sidebar_position: 0 slug: /actors/development --- This section will guide you through the whole story of [Actor](../index.mdx) development. -You can follow chapters sequentially from [Quick start](/platform/actors/development/quick-start), where you learn how to create your first Actor in just a few minutes, through the more technical sections describing the whole Actor model, up to the [Performance](/sources/platform/actors/development/performance.md) section, where you learn how to fine-tune your Actor to get the most out of the Apify platform. +You can follow chapters sequentially from [Quick start](/get-started/build-an-actor), where you learn how to create your first Actor in just a few minutes, through the more technical sections describing the whole Actor model, up to the [Performance](/sources/actors/development/performance.md) section, where you learn how to fine-tune your Actor to get the most out of the Apify platform. import Card from "@site/src/components/Card"; import CardGrid from "@site/src/components/CardGrid"; @@ -16,32 +16,32 @@ import CardGrid from "@site/src/components/CardGrid"; diff --git a/sources/platform/actors/development/permissions/_category_.json b/sources/platform/actors/development/permissions/_category_.json new file mode 100644 index 0000000000..269654f81b --- /dev/null +++ b/sources/platform/actors/development/permissions/_category_.json @@ -0,0 +1 @@ +{ "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/permissions/index.md b/sources/platform/actors/development/permissions/index.md index 843b7b234f..acf9f9e03b 100644 --- a/sources/platform/actors/development/permissions/index.md +++ b/sources/platform/actors/development/permissions/index.md @@ -1,7 +1,7 @@ --- title: Permissions description: Learn how to declare and manage permissions for your Actor, what access levels mean, and how to build secure, trusted Actors for Apify users. -sidebar_position: 7.5 +sidebar_position: 0 slug: /actors/development/permissions --- diff --git a/sources/platform/actors/development/programming_interface/_category_.json b/sources/platform/actors/development/programming_interface/_category_.json new file mode 100644 index 0000000000..269654f81b --- /dev/null +++ b/sources/platform/actors/development/programming_interface/_category_.json @@ -0,0 +1 @@ +{ "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/programming_interface/environment_variables.md b/sources/platform/actors/development/programming_interface/environment_variables.md index fbe5192c0c..7ee56f6f24 100644 --- a/sources/platform/actors/development/programming_interface/environment_variables.md +++ b/sources/platform/actors/development/programming_interface/environment_variables.md @@ -43,12 +43,12 @@ Here's a table of key system environment variables: | `ACTOR_BUILD_NUMBER` | Build number of the Actor build used in the run. | | `ACTOR_BUILD_TAGS` | A comma-separated list of tags of the Actor build used in the run. Note that this environment variable is assigned at the time of start of the Actor and doesn't change over time, even if the assigned build tags change. | | `ACTOR_TASK_ID` | ID of the Actor task. Empty if Actor is run outside of any task, e.g. directly using the API. | -| `ACTOR_EVENTS_WEBSOCKET_URL` | Websocket URL where Actor may listen for [events](/platform/actors/development/programming-interface/system-events) from Actor platform. | +| `ACTOR_EVENTS_WEBSOCKET_URL` | Websocket URL where Actor may listen for [events](/actors/development/programming-interface/system-events) from Actor platform. | | `ACTOR_STORAGES_JSON` | JSON-encoded unique identifiers of storages associated with the current Actor run. | | `ACTOR_DEFAULT_DATASET_ID` | Unique identifier for the default dataset associated with the current Actor run. | | `ACTOR_DEFAULT_KEY_VALUE_STORE_ID` | Unique identifier for the default key-value store associated with the current Actor run. | | `ACTOR_DEFAULT_REQUEST_QUEUE_ID` | Unique identifier for the default request queue associated with the current Actor run. | -| `ACTOR_INPUT_KEY` | Key of the record in the default key-value store that holds the [Actor input](/platform/actors/running/input-and-output#input). | +| `ACTOR_INPUT_KEY` | Key of the record in the default key-value store that holds the [Actor input](/actors/running/input-and-output#input). | | `ACTOR_MAX_TOTAL_CHARGE_USD` | For pay-per-event Actors, the user-set limit on run cost. Do not exceed this limit. | | `ACTOR_RESTART_ON_ERROR` | If **1**, the Actor run will be restarted if it fails. | | `APIFY_HEADLESS` | If **1**, web browsers inside the Actor should run in headless mode (no windowing system available). | @@ -58,19 +58,19 @@ Here's a table of key system environment variables: | `APIFY_PROXY_PASSWORD` | Password for accessing Apify Proxy services. This password enables the Actor to utilize proxy servers on behalf of the user who initiated the Actor run. | | `APIFY_PROXY_PORT` | TCP port number to be used for connecting to Apify Proxy. | | `APIFY_PROXY_STATUS_URL` | URL for retrieving proxy status information. Appending `?format=json` to this URL returns the data in JSON format for programmatic processing. | -| `ACTOR_STANDBY_URL` | URL for accessing web servers of Actor runs in the [Actor Standby](/platform/actors/development/programming-interface/standby) mode. | +| `ACTOR_STANDBY_URL` | URL for accessing web servers of Actor runs in the [Actor Standby](/actors/development/programming-interface/standby) mode. | | `ACTOR_STARTED_AT` | Date when the Actor was started. | | `ACTOR_TIMEOUT_AT` | Date when the Actor will time out. | | `APIFY_TOKEN` | API token of the user who started the Actor. | | `APIFY_USER_ID` | ID of the user who started the Actor. May differ from the Actor owner. | | `APIFY_USER_IS_PAYING` | If it is `1`, it means that the user who started the Actor is a paying user. | -| `ACTOR_WEB_SERVER_PORT` | TCP port for the Actor to start an HTTP server on. This server can be used to receive external messages or expose monitoring and control interfaces. The server also receives messages from the [Actor Standby](/platform/actors/development/programming-interface/standby) mode. | +| `ACTOR_WEB_SERVER_PORT` | TCP port for the Actor to start an HTTP server on. This server can be used to receive external messages or expose monitoring and control interfaces. The server also receives messages from the [Actor Standby](/actors/development/programming-interface/standby) mode. | | `ACTOR_WEB_SERVER_URL` | Unique public URL for accessing the Actor run web server from the outside world. | | `APIFY_API_PUBLIC_BASE_URL` | Public URL of the Apify API. May be used to interact with the platform programmatically. Typically set to `api.apify.com`. | | `APIFY_DEDICATED_CPUS` | Number of CPU cores reserved for the Actor, based on allocated memory. | | `APIFY_WORKFLOW_KEY` | Identifier used for grouping related runs and API calls together. | -| `APIFY_META_ORIGIN` | Specifies how an Actor run was started. Possible values are in [Runs and builds](/platform/actors/running/runs-and-builds#origin) documentation. | -| `APIFY_INPUT_SECRETS_PRIVATE_KEY_FILE` | Path to the secret key used to decrypt [Secret inputs](/platform/actors/development/actor-definition/input-schema/secret-input). | +| `APIFY_META_ORIGIN` | Specifies how an Actor run was started. Possible values are in [Runs and builds](/actors/running/runs-and-builds#origin) documentation. | +| `APIFY_INPUT_SECRETS_PRIVATE_KEY_FILE` | Path to the secret key used to decrypt [Secret inputs](/actors/development/actor-definition/input-schema/secret-input). | | `APIFY_INPUT_SECRETS_PRIVATE_KEY_PASSPHRASE` | Passphrase for the input secret key specified in `APIFY_INPUT_SECRETS_PRIVATE_KEY_FILE`. | @@ -119,7 +119,7 @@ For sensitive data like API keys or passwords, enable the **Secret** option. Thi :::caution Visibility of environment variables in public Actors -When you [publish your Actor](/platform/actors/publishing/publish), environment variables not marked as **Secret** in Apify Console are visible to anyone on the Actor detail page alongside the source code. Enable **Hide source files from Actor detail** in the Actor's **Settings** to hide both. +When you [publish your Actor](/actors/publishing/publish), environment variables not marked as **Secret** in Apify Console are visible to anyone on the Actor detail page alongside the source code. Enable **Hide source files from Actor detail** in the Actor's **Settings** to hide both. Secret environment variables are never exposed on the Actor detail page regardless of this setting. Always mark sensitive values as **Secret**. diff --git a/sources/platform/actors/development/programming_interface/index.mdx b/sources/platform/actors/development/programming_interface/index.mdx index b51c87ddc2..44c2222d67 100644 --- a/sources/platform/actors/development/programming_interface/index.mdx +++ b/sources/platform/actors/development/programming_interface/index.mdx @@ -1,6 +1,6 @@ --- title: Programming interface -sidebar_position: 4 +sidebar_position: 0 description: Learn about the programming interface of Apify Actors, important commands and features provided by the Apify SDK, and how to use them in your Actors. slug: /actors/development/programming-interface --- @@ -14,36 +14,36 @@ This chapter will guide you through all the commands you need to build your firs diff --git a/sources/platform/actors/development/programming_interface/metamorph.md b/sources/platform/actors/development/programming_interface/metamorph.md index 1d39735ec1..1b86a30bc3 100644 --- a/sources/platform/actors/development/programming_interface/metamorph.md +++ b/sources/platform/actors/development/programming_interface/metamorph.md @@ -37,7 +37,7 @@ To make your Actor compatible with metamorph, use `Actor.getInput()` instead of :::note Runtime limits -There's a limit to how many times you can metamorph a single run. Refer to the [Actor runtime limits](/platform/limits#actor-limits) for more details. +There's a limit to how many times you can metamorph a single run. Refer to the [Actor runtime limits](/account/limits#actor-limits) for more details. ::: diff --git a/sources/platform/images/actors-marketing.svg b/sources/platform/actors/images/actors-marketing.svg similarity index 100% rename from sources/platform/images/actors-marketing.svg rename to sources/platform/actors/images/actors-marketing.svg diff --git a/sources/platform/actors/index.mdx b/sources/platform/actors/index.mdx index a9b4480cb0..89091d1438 100644 --- a/sources/platform/actors/index.mdx +++ b/sources/platform/actors/index.mdx @@ -1,7 +1,7 @@ --- title: Actors description: Learn how to develop, run and share serverless cloud programs. Create your own web scraping and automation tools and publish them on the Apify platform. -sidebar_position: 7 +sidebar_position: 0 category: platform slug: /actors --- @@ -17,17 +17,17 @@ import CardGrid from "@site/src/components/CardGrid"; @@ -59,7 +59,7 @@ The documentation and input/output schemas help people understand what the Actor Build Actors to automate tasks, scrape data, or create custom workflows. The Apify platform gives you everything you need to develop, test, and deploy your code. -Ready to start? Check out the [Actor development documentation](/platform/actors/development). +Ready to start? Check out the [Actor development documentation](/actors/development). ## Run Actors diff --git a/sources/platform/actors/proxy/_category_.json b/sources/platform/actors/proxy/_category_.json new file mode 100644 index 0000000000..7667a204ed --- /dev/null +++ b/sources/platform/actors/proxy/_category_.json @@ -0,0 +1 @@ +{ "label": "Proxy", "position": 5, "collapsed": true, "collapsible": true } diff --git a/sources/platform/proxy/datacenter_proxy.md b/sources/platform/actors/proxy/datacenter_proxy.md similarity index 99% rename from sources/platform/proxy/datacenter_proxy.md rename to sources/platform/actors/proxy/datacenter_proxy.md index f1357022b9..20d2f0fe57 100644 --- a/sources/platform/proxy/datacenter_proxy.md +++ b/sources/platform/actors/proxy/datacenter_proxy.md @@ -2,7 +2,7 @@ title: Datacenter proxy description: Learn how to reduce blocking when web scraping using IP address rotation. See proxy parameters and learn to implement Apify Proxy in an application. sidebar_position: 10.2 -slug: /proxy/datacenter-proxy +slug: /actors/proxy/datacenter-proxy --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/proxy/google_serp_proxy.md b/sources/platform/actors/proxy/google_serp_proxy.md similarity index 99% rename from sources/platform/proxy/google_serp_proxy.md rename to sources/platform/actors/proxy/google_serp_proxy.md index 4b62a159c4..dbe0146627 100644 --- a/sources/platform/proxy/google_serp_proxy.md +++ b/sources/platform/actors/proxy/google_serp_proxy.md @@ -2,7 +2,7 @@ title: Google SERP proxy description: Learn how to collect search results from Google Search-powered tools. Get search results from localized domains in multiple countries, e.g. the US and Germany. sidebar_position: 10.4 -slug: /proxy/google-serp-proxy +slug: /actors/proxy/google-serp-proxy --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/images/proxy-custom.png b/sources/platform/actors/proxy/images/proxy-custom.png similarity index 100% rename from sources/platform/images/proxy-custom.png rename to sources/platform/actors/proxy/images/proxy-custom.png diff --git a/sources/platform/images/proxy-marketing.svg b/sources/platform/actors/proxy/images/proxy-marketing.svg similarity index 100% rename from sources/platform/images/proxy-marketing.svg rename to sources/platform/actors/proxy/images/proxy-marketing.svg diff --git a/sources/platform/proxy/images/proxy-status.png b/sources/platform/actors/proxy/images/proxy-status.png similarity index 100% rename from sources/platform/proxy/images/proxy-status.png rename to sources/platform/actors/proxy/images/proxy-status.png diff --git a/sources/platform/proxy/index.md b/sources/platform/actors/proxy/index.md similarity index 94% rename from sources/platform/proxy/index.md rename to sources/platform/actors/proxy/index.md index 76016450c0..af8b9a32e5 100644 --- a/sources/platform/proxy/index.md +++ b/sources/platform/actors/proxy/index.md @@ -1,9 +1,9 @@ --- title: Proxy description: Learn to anonymously access websites in scraping/automation jobs. Improve data outputs and efficiency of bots, and access websites from various geographies. -sidebar_position: 10 +sidebar_position: 0 category: platform -slug: /proxy +slug: /actors/proxy --- import Tabs from '@theme/Tabs'; @@ -79,17 +79,17 @@ Several types of proxy servers exist, each offering distinct advantages, disadva diff --git a/sources/platform/proxy/residential_proxy.md b/sources/platform/actors/proxy/residential_proxy.md similarity index 99% rename from sources/platform/proxy/residential_proxy.md rename to sources/platform/actors/proxy/residential_proxy.md index 15d8c98d91..dc782b7302 100644 --- a/sources/platform/proxy/residential_proxy.md +++ b/sources/platform/actors/proxy/residential_proxy.md @@ -2,7 +2,7 @@ title: Residential proxy description: Achieve a higher level of anonymity using IP addresses from human users. Access a wider pool of proxies and reduce blocking by websites' anti-scraping measures. sidebar_position: 10.3 -slug: /proxy/residential-proxy +slug: /actors/proxy/residential-proxy --- import Tabs from '@theme/Tabs'; diff --git a/sources/platform/proxy/usage.md b/sources/platform/actors/proxy/usage.md similarity index 98% rename from sources/platform/proxy/usage.md rename to sources/platform/actors/proxy/usage.md index 174d4fc428..58f8da77ee 100644 --- a/sources/platform/proxy/usage.md +++ b/sources/platform/actors/proxy/usage.md @@ -2,7 +2,7 @@ title: Proxy usage description: Configure Apify Proxy connections using HTTP proxy protocol. Find the correct username, password, hostname, and port parameters for your setup. sidebar_position: 10.1 -slug: /proxy/usage +slug: /actors/proxy/usage --- ## Connection settings @@ -144,7 +144,7 @@ Use [sessions](#sessions) to control how you rotate IP addresses. See the guide Sessions allow you to use the same IP address for multiple connections. In cases where you need to keep the same session (e.g. when you need to log in to a website), it is best to keep the same proxy and so the IP address. On the other hand by switching the IP address, you can avoid being blocked by the website. -To set a new session, pass the `session` parameter in your [username](./usage.md#username-parameters) field when connecting to a proxy. This will serve as the session's ID and an IP address will be assigned to it. To [use that IP address in other requests](/platform/proxy/datacenter-proxy#connecting-to-datacenter-proxies), pass that same session ID in the username field. +To set a new session, pass the `session` parameter in your [username](./usage.md#username-parameters) field when connecting to a proxy. This will serve as the session's ID and an IP address will be assigned to it. To [use that IP address in other requests](/actors/proxy/datacenter-proxy#connecting-to-datacenter-proxies), pass that same session ID in the username field. We recommend you to use [SessionPool](https://crawlee.dev/api/core/class/SessionPool) abstraction when managing sessions. The created session will then store information such as cookies and can be used to generate [browser fingerprints](/academy/anti-scraping/mitigation/generating-fingerprints). You can also assign custom user data such as authorization tokens and specific headers. Sessions are available for [datacenter](./datacenter_proxy.md) and [residential](./ diff --git a/sources/platform/proxy/your_own_proxies.md b/sources/platform/actors/proxy/your_own_proxies.md similarity index 89% rename from sources/platform/proxy/your_own_proxies.md rename to sources/platform/actors/proxy/your_own_proxies.md index c9f54f6411..f5270201bd 100644 --- a/sources/platform/proxy/your_own_proxies.md +++ b/sources/platform/actors/proxy/your_own_proxies.md @@ -2,7 +2,7 @@ title: Using your own proxies description: Add your own proxy URLs to Actor runs in Apify Console or configure them in the Apify SDK using the proxy configuration API for JavaScript and Python. sidebar_position: 10.5 -slug: /proxy/using-your-own-proxies +slug: /actors/proxy/using-your-own-proxies --- In addition to Apify Proxy, you can use your own proxies both in Apify Console and the SDK. @@ -11,7 +11,7 @@ In addition to Apify Proxy, you can use your own proxies both in Apify Console a To use your own proxies with Apify Console, in your Actor's **Input and options** tab, scroll down and open the **Proxy and browser configuration** section. Enter your proxy URLs, and you're good to go. -![Using custom proxy in Apify Console](../images/proxy-custom.png) +![Using custom proxy in Apify Console](./images/proxy-custom.png) ## Custom proxies in SDK diff --git a/sources/platform/actors/publishing/_category_.json b/sources/platform/actors/publishing/_category_.json new file mode 100644 index 0000000000..2c4b72aa4c --- /dev/null +++ b/sources/platform/actors/publishing/_category_.json @@ -0,0 +1 @@ +{ "label": "Publish and monetize", "position": 3, "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/publishing/index.mdx b/sources/platform/actors/publishing/index.mdx index 65a18f5a58..c40d6c0e97 100644 --- a/sources/platform/actors/publishing/index.mdx +++ b/sources/platform/actors/publishing/index.mdx @@ -1,7 +1,7 @@ --- title: Publishing and monetization description: Learn the stages involved in publishing and monetizing Actors on the Apify platform, from development and testing to promotion in Apify Store. -sidebar_position: 7.5 +sidebar_position: 0 slug: /actors/publishing --- @@ -35,7 +35,7 @@ Packaging your software as an Actor allows you to launch new SaaS product faster - Pay-per-event for specific operations - Fixed rental fee for continuous access -To learn more, visit the [Actors in Store](/platform/actors/running/actors-in-store#pricing-models) page. +To learn more, visit the [Actors in Store](/actors/running/actors-in-store#pricing-models) page. ## Maintain public Actors diff --git a/sources/platform/actors/publishing/monetize/index.mdx b/sources/platform/actors/publishing/monetize/index.mdx index 9109fe5917..8f4dce13c9 100644 --- a/sources/platform/actors/publishing/monetize/index.mdx +++ b/sources/platform/actors/publishing/monetize/index.mdx @@ -2,7 +2,7 @@ title: Monetize your Actor description: Monetize your Actors on Apify Store by choosing a pricing model such as pay per event or a flat monthly rental fee for users. slug: /actors/publishing/monetize -sidebar_position: 2 +sidebar_position: 0 --- import Tabs from '@theme/Tabs'; @@ -21,7 +21,7 @@ Actors in Apify Store can be published under one of the following pricing models -For a detailed comparison of pricing models from the perspective of your users, see [Actors in Store](/platform/actors/running/actors-in-store). +For a detailed comparison of pricing models from the perspective of your users, see [Actors in Store](/actors/running/actors-in-store). ## Key benefits @@ -96,7 +96,7 @@ If the monthly profit does not meet these thresholds, as per the [Terms & Condit When monetizing your Actor, you might want to limit features or usage for users on the Apify free plan. If you choose to do this, you _must_ handle it transparently: - Communicate upfront: Clearly state any limitations in your Actor's `README` and input schema. Users should know about restrictions _before_ they run the Actor. -- Graceful exits: If a free user hits a limit, don't crash the Actor or return a system error. Instead, exit gracefully with a clear [status message](/platform/actors/development/programming-interface/status-messages#communicating-limitations) explaining the limit (e.g., "Free tier limit reached"). +- Graceful exits: If a free user hits a limit, don't crash the Actor or return a system error. Instead, exit gracefully with a clear [status message](/actors/development/programming-interface/status-messages#communicating-limitations) explaining the limit (e.g., "Free tier limit reached"). - Avoid confusion: Never make a policy restriction look like a bug or platform error. ## Actor analytics diff --git a/sources/platform/actors/publishing/monetize/pay_per_event.mdx b/sources/platform/actors/publishing/monetize/pay_per_event.mdx index 36ce2f7f5d..d26834e60d 100644 --- a/sources/platform/actors/publishing/monetize/pay_per_event.mdx +++ b/sources/platform/actors/publishing/monetize/pay_per_event.mdx @@ -29,7 +29,7 @@ Your profit is calculated from the mentioned formula: where: - _Revenue_: The amount charged for events via the PPE charging API or through JS/Python SDK. You receive 80% of this revenue. -- _Platform costs_: The underlying platform usage costs for running the Actor. For more details, visit the [Computing your costs for PPE Actors](/platform/actors/publishing/monetize/pricing-and-costs#computing-your-costs-for-ppe-actors) section. +- _Platform costs_: The underlying platform usage costs for running the Actor. For more details, visit the [Computing your costs for PPE Actors](/actors/publishing/monetize/pricing-and-costs#computing-your-costs-for-ppe-actors) section. Only revenue and cost for Apify customers on paid plans are taken into consideration when computing your profit. Users on free plans are not reflected there. @@ -78,7 +78,7 @@ The `eventChargeLimitReached` property checks if the user's limit allows for ano :::info ACTOR_MAX_TOTAL_CHARGE_USD environment variable -For pay-per-event Actors, users set a spending limit through Apify Console. This limit is available in your Actor code as the `ACTOR_MAX_TOTAL_CHARGE_USD` [environment variable](/platform/actors/development/programming-interface/environment-variables), which contains the user's maximum cost. +For pay-per-event Actors, users set a spending limit through Apify Console. This limit is available in your Actor code as the `ACTOR_MAX_TOTAL_CHARGE_USD` [environment variable](/actors/development/programming-interface/environment-variables), which contains the user's maximum cost. The Apify SDK's `ChargeResult` respects the user set limit already. ::: @@ -158,7 +158,7 @@ We recommend using the synthetic Actor start event in PPE Actors. It benefits bo Starting an Actor takes time, and creates additional cost for the Actor creator, because the profit equals revenue minus platform costs. -One of the options to charge for the time spent on starting the Actor is to charge an “Actor start” event. Unfortunately, this makes your Actor comparably expensive with other tools on the market (outside of [Apify Store](/platform/console/store)) that do not incur this startup cost. +One of the options to charge for the time spent on starting the Actor is to charge an “Actor start” event. Unfortunately, this makes your Actor comparably expensive with other tools on the market (outside of [Apify Store](/account/store)) that do not incur this startup cost. We want to make it easier for Actor creators to stay competitive, but also help them to be profitable. Therefore, we have the Apify Actor synthetic start event `apify-actor-start`. This event is enabled by default for all new PPE Actors, and when you use it Apify will cover the compute unit cost of the first 5 seconds of every Actor run. @@ -415,7 +415,7 @@ Fixed pricing is simpler for users to predict, while usage-based pricing more ac Your profit and costs are computed _only from the first two users_ since they are on Apify paid plans. -The platform usage costs are just examples, but you can see the actual costs in the [Computing your costs for PPE Actors](/platform/actors/publishing/monetize/pricing-and-costs#computing-your-costs-for-ppe-actors) section. +The platform usage costs are just examples, but you can see the actual costs in the [Computing your costs for PPE Actors](/actors/publishing/monetize/pricing-and-costs#computing-your-costs-for-ppe-actors) section. ### Revenue breakdown diff --git a/sources/platform/actors/publishing/monetize/rental.mdx b/sources/platform/actors/publishing/monetize/rental.mdx index 0724c0174d..467b3bebcf 100644 --- a/sources/platform/actors/publishing/monetize/rental.mdx +++ b/sources/platform/actors/publishing/monetize/rental.mdx @@ -35,7 +35,7 @@ The rental model, while easy to set up, is less profitable because its pricing d ### AI compatibility limitations -The growing limitation is AI compatibility. [Apify's MCP server](/platform/integrations/mcp) explicitly excludes rental Actors from search results, making them invisible to AI systems that dynamically select and execute tools. This significantly reduces your Actor's discoverability in AI workflows. +The growing limitation is AI compatibility. [Apify's MCP server](/integrations/mcp) explicitly excludes rental Actors from search results, making them invisible to AI systems that dynamically select and execute tools. This significantly reduces your Actor's discoverability in AI workflows. ## Example of a rental pricing model diff --git a/sources/platform/actors/publishing/publish.mdx b/sources/platform/actors/publishing/publish.mdx index f3e2d3c109..c6db8d6b61 100644 --- a/sources/platform/actors/publishing/publish.mdx +++ b/sources/platform/actors/publishing/publish.mdx @@ -59,6 +59,6 @@ Note that the complexity of your README should match the complexity of your Acto ## Source code visibility -When you publish an Actor, its source code files and non-secret [environment variables](/platform/actors/development/programming-interface/environment-variables) are publicly visible by default on the Actor detail page. +When you publish an Actor, its source code files and non-secret [environment variables](/actors/development/programming-interface/environment-variables) are publicly visible by default on the Actor detail page. To hide them, go to your Actor's **Settings** tab in Apify Console and check **Hide source files from Actor detail**. Secret environment variables are never exposed regardless of this setting. diff --git a/sources/platform/actors/running/_category_.json b/sources/platform/actors/running/_category_.json new file mode 100644 index 0000000000..6d182e4301 --- /dev/null +++ b/sources/platform/actors/running/_category_.json @@ -0,0 +1 @@ +{ "label": "Run and manage", "position": 1, "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/running/actor_standby.md b/sources/platform/actors/running/actor_standby.md index a66d1a0411..826ea8410a 100644 --- a/sources/platform/actors/running/actor_standby.md +++ b/sources/platform/actors/running/actor_standby.md @@ -47,9 +47,9 @@ This approach can be useful if you cannot modify the request headers. ``` :::tip -You can use [scoped tokens](/platform/integrations/api#limited-permissions) to send standby requests. This is useful for allowing third-party services to interact with your Actor without granting access to your entire account. +You can use [scoped tokens](/integrations/api#limited-permissions) to send standby requests. This is useful for allowing third-party services to interact with your Actor without granting access to your entire account. -However, [restricting what an Actor can access](/platform/integrations/api#restricted-access-restrict-what-actors-can-access-using-the-scope-of-this-actor) using a scoped token is not supported when running in Standby mode. +However, [restricting what an Actor can access](/integrations/api#restricted-access-restrict-what-actors-can-access-using-the-scope-of-this-actor) using a scoped token is not supported when running in Standby mode. ::: ## Can I still run the Actor in normal mode diff --git a/sources/platform/monitoring/images/alerts.png b/sources/platform/actors/running/images/monitoring/alerts.png similarity index 100% rename from sources/platform/monitoring/images/alerts.png rename to sources/platform/actors/running/images/monitoring/alerts.png diff --git a/sources/platform/monitoring/images/daily-run-statuses.png b/sources/platform/actors/running/images/monitoring/daily-run-statuses.png similarity index 100% rename from sources/platform/monitoring/images/daily-run-statuses.png rename to sources/platform/actors/running/images/monitoring/daily-run-statuses.png diff --git a/sources/platform/monitoring/images/email-notification.png b/sources/platform/actors/running/images/monitoring/email-notification.png similarity index 100% rename from sources/platform/monitoring/images/email-notification.png rename to sources/platform/actors/running/images/monitoring/email-notification.png diff --git a/sources/platform/monitoring/images/in-app-notification.png b/sources/platform/actors/running/images/monitoring/in-app-notification.png similarity index 100% rename from sources/platform/monitoring/images/in-app-notification.png rename to sources/platform/actors/running/images/monitoring/in-app-notification.png diff --git a/sources/platform/monitoring/images/metric-options.png b/sources/platform/actors/running/images/monitoring/metric-options.png similarity index 100% rename from sources/platform/monitoring/images/metric-options.png rename to sources/platform/actors/running/images/monitoring/metric-options.png diff --git a/sources/platform/monitoring/images/monitoring.png b/sources/platform/actors/running/images/monitoring/monitoring.png similarity index 100% rename from sources/platform/monitoring/images/monitoring.png rename to sources/platform/actors/running/images/monitoring/monitoring.png diff --git a/sources/platform/monitoring/images/notifications.png b/sources/platform/actors/running/images/monitoring/notifications.png similarity index 100% rename from sources/platform/monitoring/images/notifications.png rename to sources/platform/actors/running/images/monitoring/notifications.png diff --git a/sources/platform/monitoring/images/run-statistics-chart.png b/sources/platform/actors/running/images/monitoring/run-statistics-chart.png similarity index 100% rename from sources/platform/monitoring/images/run-statistics-chart.png rename to sources/platform/actors/running/images/monitoring/run-statistics-chart.png diff --git a/sources/platform/images/schedules-actor-input.png b/sources/platform/actors/running/images/schedules-actor-input.png similarity index 100% rename from sources/platform/images/schedules-actor-input.png rename to sources/platform/actors/running/images/schedules-actor-input.png diff --git a/sources/platform/images/schedules-bulk-notifications.png b/sources/platform/actors/running/images/schedules-bulk-notifications.png similarity index 100% rename from sources/platform/images/schedules-bulk-notifications.png rename to sources/platform/actors/running/images/schedules-bulk-notifications.png diff --git a/sources/platform/images/schedules-overview.png b/sources/platform/actors/running/images/schedules-overview.png similarity index 100% rename from sources/platform/images/schedules-overview.png rename to sources/platform/actors/running/images/schedules-overview.png diff --git a/sources/platform/images/schedules-setup-tool.png b/sources/platform/actors/running/images/schedules-setup-tool.png similarity index 100% rename from sources/platform/images/schedules-setup-tool.png rename to sources/platform/actors/running/images/schedules-setup-tool.png diff --git a/sources/platform/images/schedules-task-input.png b/sources/platform/actors/running/images/schedules-task-input.png similarity index 100% rename from sources/platform/images/schedules-task-input.png rename to sources/platform/actors/running/images/schedules-task-input.png diff --git a/sources/platform/actors/running/index.md b/sources/platform/actors/running/index.md index e3f19b2626..c94327964d 100644 --- a/sources/platform/actors/running/index.md +++ b/sources/platform/actors/running/index.md @@ -1,7 +1,7 @@ --- title: Running Actors description: Start an Actor from Apify Console or via API. Learn about Actor lifecycles, how to specify settings and version, provide input, and resurrect finished runs. -sidebar_position: 7.1 +sidebar_position: 0 slug: /actors/running --- diff --git a/sources/platform/monitoring/index.md b/sources/platform/actors/running/monitoring.md similarity index 92% rename from sources/platform/monitoring/index.md rename to sources/platform/actors/running/monitoring.md index 2b94d18481..d430e8211c 100644 --- a/sources/platform/monitoring/index.md +++ b/sources/platform/actors/running/monitoring.md @@ -3,7 +3,7 @@ title: Monitoring description: Learn how to make sure your Actors and tasks perform as expected and retrieve correct results. Get alerts when jobs or their metrics fall short. sidebar_position: 12 category: guides -slug: /monitoring +slug: /actors/running/monitoring --- The web is continuously evolving, and so are the websites you interact with. If you implement Apify Actors or the data they provide into your daily workflows, you need to make sure that everything runs as expected. @@ -18,20 +18,20 @@ Monitoring is an option you can find on any Actor or saved task in Apify Console The monitoring system is free for all users. You can use it to monitor as many Actors and tasks as you want, and it does not use any additional resources on top of your usage when running them. -![Monitoring](./images/monitoring.png) +![Monitoring](./images/monitoring/monitoring.png) ### Features Currently, the monitoring option offers the following features: 1. Chart showing **statuses** of runs of the Actor or saved task over last 30 days. - ![Daily run statuses](./images/daily-run-statuses.png) + ![Daily run statuses](./images/monitoring/daily-run-statuses.png) 2. Chart displaying **metrics** of the last 200 runs of the Actor or saved task. - ![Run statistics](./images/run-statistics-chart.png) + ![Run statistics](./images/monitoring/run-statistics-chart.png) 3. Option to set up **alerts** with notifications based on the run metrics. - ![Alerts](./images/alerts.png) + ![Alerts](./images/monitoring/alerts.png) > Both charts can also be added to your Apify Console home page so you can quickly see if there are any issues every time you open Apify Console. @@ -53,7 +53,7 @@ When you set up an alert, you have four choices for how you want the metrics to ::: -![Metric condition configuration](./images/metric-options.png) +![Metric condition configuration](./images/monitoring/metric-options.png) You can get notified by email, Slack, or in Apify Console. If you use Slack, we suggest using Slack notifications instead of email because they are more reliable, and you can also get notified quicker. @@ -61,7 +61,7 @@ You can get notified by email, Slack, or in Apify Console. If you use Slack, we - **Slack** - To set up Slack notifications, you first need to connect your Slack workspace to Apify. To do that, go to your [account integration settings](https://console.apify.com/settings/integrations) and click on the **+ Add** button in the Slack section. Once you have your workspace connected, you can choose the workspace when setting up alert notifications and then pick a channel to which you want the notifications to be delivered. - **In Console** - You can also get notified in Apify Console. This is useful if you access Apify Console often, and you do not need to be notified as soon as possible. -![Notifications configurations](./images/notifications.png) +![Notifications configurations](./images/monitoring/notifications.png) ### Alert notification @@ -74,11 +74,11 @@ The email and Slack alert notifications both contain the same information. You w - **Actor** - The full name of the Actor that triggered the alert which links to the Actor detail in Apify Console. - **Task** - If the monitoring alert was set up for a task, then this field will contain the name of the task which links to the task detail in Apify Console. -![Email notification](./images/email-notification.png) +![Email notification](./images/monitoring/email-notification.png) While the in-app notification will contain less information, it will point you directly to the Actor or task that triggered the alert: - + ## Other diff --git a/sources/platform/schedules.md b/sources/platform/actors/running/schedules.md similarity index 97% rename from sources/platform/schedules.md rename to sources/platform/actors/running/schedules.md index 7b9147c563..43e1e91466 100644 --- a/sources/platform/schedules.md +++ b/sources/platform/actors/running/schedules.md @@ -3,7 +3,7 @@ title: Schedules description: Learn how to automatically start your Actor and task runs and the basics of cron expressions. Set up and manage your schedules from Apify Console or via API. sidebar_position: 8 category: platform -slug: /schedules +slug: /actors/running/schedules --- Schedules allow you to run your Actors and tasks at specific times. You schedule the run frequency using [cron expressions](#cron-expressions). @@ -65,7 +65,7 @@ To add more Actors or tasks, just repeat the process. You can disable or enable the schedule at any time using the **Disable**/**Enable** button on the schedule detail page. New schedules are created in _disabled_ state by default. -For integrations, you can also add a [webhook](/platform/integrations/webhooks) to your tasks, which will notify you (or perform an action of your choice) every time the task runs. +For integrations, you can also add a [webhook](/integrations/webhooks) to your tasks, which will notify you (or perform an action of your choice) every time the task runs. ### Apify API diff --git a/sources/platform/actors/running/store.md b/sources/platform/actors/running/store.md index a62c9f6cdd..3167ae4569 100644 --- a/sources/platform/actors/running/store.md +++ b/sources/platform/actors/running/store.md @@ -10,7 +10,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 [Marketing checklist](/academy/actor-marketing-playbook/promote-your-actor/checklist) section of the Apify Developers Academy. +Anyone is welcome to [publish Actors](/actors/publishing) in the store, and you can even [monetize your Actors](/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. ::: @@ -59,7 +59,7 @@ If charges seem incorrect, contact the Actor author or the Apify support team. Y ### Pay per usage -When you use a pay per usage Actor, you are only charged for the platform usage that the runs of this Actor generate. [Platform usage](./usage_and_resources.md) includes components such as compute units, operations on [storages](/platform/storage), and usage of [residential proxies](/platform/proxy/residential-proxy) or [SERPs](/platform/proxy/google-serp-proxy). +When you use a pay per usage Actor, you are only charged for the platform usage that the runs of this Actor generate. [Platform usage](./usage_and_resources.md) includes components such as compute units, operations on [storages](/actors/storage), and usage of [residential proxies](/actors/proxy/residential-proxy) or [SERPs](/actors/proxy/google-serp-proxy). ![Pay for usage Actor example](./images/store/pay_per_usage_actor_example.png) diff --git a/sources/platform/actors/storage/_category_.json b/sources/platform/actors/storage/_category_.json new file mode 100644 index 0000000000..494fd05933 --- /dev/null +++ b/sources/platform/actors/storage/_category_.json @@ -0,0 +1 @@ +{ "label": "Storage", "position": 4, "collapsed": true, "collapsible": true } diff --git a/sources/platform/storage/dataset.md b/sources/platform/actors/storage/dataset.md similarity index 96% rename from sources/platform/storage/dataset.md rename to sources/platform/actors/storage/dataset.md index db662209e4..db31520685 100644 --- a/sources/platform/storage/dataset.md +++ b/sources/platform/actors/storage/dataset.md @@ -3,7 +3,7 @@ title: Dataset description: Store and export web scraping, crawling or data processing job results. Learn how to access and manage datasets in Apify Console or via API. sidebar_position: 9.2 toc_max_heading_level: 4 -slug: /storage/dataset +slug: /actors/storage/dataset --- **Store and export web scraping, crawling or data processing job results. Learn how to access and manage datasets in Apify Console or via API.** @@ -18,7 +18,7 @@ Dataset storage enables you to sequentially save and retrieve data. A unique dat Typically, datasets comprise results from web scraping, crawling, and data processing jobs. You can visualize this data in a table, where each object is forming a row and its attributes are represented as columns. You have the option to export data in various formats, including JSON, CSV, XML, Excel, HTML Table, RSS or JSONL. > Named datasets are retained indefinitely. -> Unnamed datasets expire after 7 days unless otherwise specified. [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed datasets expire after 7 days unless otherwise specified. [Learn more](/actors/storage/usage#named-and-unnamed-storages) Dataset storage is _append-only_ - data can only be added and cannot be modified or deleted once stored. @@ -43,7 +43,7 @@ To view or download a dataset: 1. Browse the data in **Table** or **JSON** view. 1. Click **Export** to download the data in your preferred format. -Utilize the **Actions** menu to modify the dataset's name, which also affects its [retention period](/platform/storage/usage#data-retention), and to adjust [access rights](../collaboration/index.md). The **API** button allows you to explore and test the dataset's [API endpoints](/api/v2/storage-datasets). +Utilize the **Actions** menu to modify the dataset's name, which also affects its [retention period](/actors/storage/usage#data-retention), and to adjust [access rights](../collaboration/index.md). The **API** button allows you to explore and test the dataset's [API endpoints](/api/v2/storage-datasets). ![Datasets detail view](./images/datasets-detail.png) @@ -382,9 +382,9 @@ By default, the whole result is wrapped in an `` element, while each pag You can grant [access rights](../collaboration/index.md) to your dataset through the **Share** button under the **Actions** menu. For more details, check the [full list of permissions](../collaboration/list_of_permissions.md). -You can also share datasets by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share datasets by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls). ### Share datasets between runs @@ -442,7 +442,7 @@ other_dataset_client = apify_client.dataset('jane-doe/old-dataset') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -See the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +See the [Storage overview](/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Limits diff --git a/sources/platform/storage/images/datasets-app.png b/sources/platform/actors/storage/images/datasets-app.png similarity index 100% rename from sources/platform/storage/images/datasets-app.png rename to sources/platform/actors/storage/images/datasets-app.png diff --git a/sources/platform/storage/images/datasets-detail.png b/sources/platform/actors/storage/images/datasets-detail.png similarity index 100% rename from sources/platform/storage/images/datasets-detail.png rename to sources/platform/actors/storage/images/datasets-detail.png diff --git a/sources/platform/images/datasets-overview.png b/sources/platform/actors/storage/images/datasets-overview.png similarity index 100% rename from sources/platform/images/datasets-overview.png rename to sources/platform/actors/storage/images/datasets-overview.png diff --git a/sources/platform/storage/images/find-store-id.png b/sources/platform/actors/storage/images/find-store-id.png similarity index 100% rename from sources/platform/storage/images/find-store-id.png rename to sources/platform/actors/storage/images/find-store-id.png diff --git a/sources/platform/images/key-value-overview.svg b/sources/platform/actors/storage/images/key-value-overview.svg similarity index 100% rename from sources/platform/images/key-value-overview.svg rename to sources/platform/actors/storage/images/key-value-overview.svg diff --git a/sources/platform/storage/images/key-value-stores-app.png b/sources/platform/actors/storage/images/key-value-stores-app.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-app.png rename to sources/platform/actors/storage/images/key-value-stores-app.png diff --git a/sources/platform/storage/images/key-value-stores-detail-header.png b/sources/platform/actors/storage/images/key-value-stores-detail-header.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-detail-header.png rename to sources/platform/actors/storage/images/key-value-stores-detail-header.png diff --git a/sources/platform/storage/images/key-value-stores-detail-records.png b/sources/platform/actors/storage/images/key-value-stores-detail-records.png similarity index 100% rename from sources/platform/storage/images/key-value-stores-detail-records.png rename to sources/platform/actors/storage/images/key-value-stores-detail-records.png diff --git a/sources/platform/storage/images/overview-api.png b/sources/platform/actors/storage/images/overview-api.png similarity index 100% rename from sources/platform/storage/images/overview-api.png rename to sources/platform/actors/storage/images/overview-api.png diff --git a/sources/platform/storage/images/request-queue-app.png b/sources/platform/actors/storage/images/request-queue-app.png similarity index 100% rename from sources/platform/storage/images/request-queue-app.png rename to sources/platform/actors/storage/images/request-queue-app.png diff --git a/sources/platform/storage/images/request-queue-detail.png b/sources/platform/actors/storage/images/request-queue-detail.png similarity index 100% rename from sources/platform/storage/images/request-queue-detail.png rename to sources/platform/actors/storage/images/request-queue-detail.png diff --git a/sources/platform/images/request-queue-overview.svg b/sources/platform/actors/storage/images/request-queue-overview.svg similarity index 100% rename from sources/platform/images/request-queue-overview.svg rename to sources/platform/actors/storage/images/request-queue-overview.svg diff --git a/sources/platform/images/storage-marketing.svg b/sources/platform/actors/storage/images/storage-marketing.svg similarity index 100% rename from sources/platform/images/storage-marketing.svg rename to sources/platform/actors/storage/images/storage-marketing.svg diff --git a/sources/platform/storage/index.md b/sources/platform/actors/storage/index.md similarity index 88% rename from sources/platform/storage/index.md rename to sources/platform/actors/storage/index.md index 6244cf314b..dd278e5677 100644 --- a/sources/platform/storage/index.md +++ b/sources/platform/actors/storage/index.md @@ -1,9 +1,9 @@ --- title: Storage description: Store anything from images and key-value pairs to structured output data. Learn how to access and manage your stored data from the Apify platform or via API. -sidebar_position: 9 +sidebar_position: 0 category: platform -slug: /storage +slug: /actors/storage --- import Card from "@site/src/components/Card"; @@ -16,17 +16,17 @@ The Apify platform provides three types of storage accessible both within [Apify diff --git a/sources/platform/storage/key_value_store.md b/sources/platform/actors/storage/key_value_store.md similarity index 96% rename from sources/platform/storage/key_value_store.md rename to sources/platform/actors/storage/key_value_store.md index b0b29e212a..b759f7ef95 100644 --- a/sources/platform/storage/key_value_store.md +++ b/sources/platform/actors/storage/key_value_store.md @@ -3,7 +3,7 @@ title: Key-value store description: Store anything from Actor or task run results, JSON documents, or images. Learn how to access and manage key-value stores from Apify Console or via API. toc_max_heading_level: 4 sidebar_position: 9.3 -slug: /storage/key-value-store +slug: /actors/storage/key-value-store --- **Store anything from Actor or task run results, JSON documents, or images. Learn how to access and manage key-value stores from Apify Console or via API.** @@ -20,7 +20,7 @@ Each Actor run is assigned its own key-value store when it is created. The store Key-value stores are mutable - you can both add entries and delete them. > Named key-value stores are retained indefinitely.
-> Unnamed key-value stores expire after 7 days unless otherwise specified.
> [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed key-value stores expire after 7 days unless otherwise specified.
> [Learn more](/actors/storage/usage#named-and-unnamed-storages) ## Basic usage @@ -37,7 +37,7 @@ In [Apify Console](https://console.apify.com), you can view your key-value store ![Key-value stores in app](./images/key-value-stores-app.png) -To view a key-value store's content, click on its **Store ID**. Under the **Actions** menu, you can rename your store (which extends its [retention period](/platform/storage/usage#named-and-unnamed-storages)) and grant [access rights](../collaboration/index.md) using the **Share** button. +To view a key-value store's content, click on its **Store ID**. Under the **Actions** menu, you can rename your store (which extends its [retention period](/actors/storage/usage#named-and-unnamed-storages)) and grant [access rights](../collaboration/index.md) using the **Share** button. Click on the **API** button to view and test a store's [API endpoints](/api/v2/storage-key-value-stores). ![Key-value stores detail](./images/key-value-stores-detail-header.png) @@ -269,9 +269,9 @@ _Using the [JavaScript SDK](/sdk/js/reference/class/KeyValueStore#setValue) or t You can grant [access rights](../collaboration/index.md) to your key-value store through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../collaboration/list_of_permissions.md). -You can also share key-value stores by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share key-value stores by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls). ### Share key-value stores between runs @@ -329,7 +329,7 @@ other_store_client = apify_client.key_value_store('jane-doe/old-store') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -Check out the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +Check out the [Storage overview](/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Data consistency diff --git a/sources/platform/storage/request_queue.md b/sources/platform/actors/storage/request_queue.md similarity index 97% rename from sources/platform/storage/request_queue.md rename to sources/platform/actors/storage/request_queue.md index 479a2c970d..52572823f7 100644 --- a/sources/platform/storage/request_queue.md +++ b/sources/platform/actors/storage/request_queue.md @@ -3,7 +3,7 @@ title: Request queue description: Queue URLs for an Actor to visit in its run. Learn how to share your queues between Actor runs. Access and manage request queues from Apify Console or via API. toc_max_heading_level: 4 sidebar_position: 9.4 -slug: /storage/request-queue +slug: /actors/storage/request-queue --- **Queue URLs for an Actor to visit in its run. Learn how to share your queues between Actor runs. Access and manage request queues from Apify Console or via API.** @@ -18,7 +18,7 @@ Request queues enable you to enqueue and retrieve requests such as URLs with an The storage system for request queues accommodates both breadth-first and depth-first crawling strategies, along with the inclusion of custom data attributes. This system enables you to check if certain URLs have already been encountered, add new URLs to the queue, and retrieve the next set of URLs for processing. > Named request queues are retained indefinitely.
-> Unnamed request queues expire after 7 days unless otherwise specified.
> [Learn more](/platform/storage/usage#named-and-unnamed-storages) +> Unnamed request queues expire after 7 days unless otherwise specified.
> [Learn more](/actors/storage/usage#named-and-unnamed-storages) ## Basic usage @@ -37,7 +37,7 @@ In the [Apify Console](https://console.apify.com), you can view your request que To view a request queue, click on its **Queue ID**. Under the **Actions** menu, you can rename your queue's name (and, in turn, its -[retention period](/platform/storage/usage#named-and-unnamed-storages)) and [access rights](../collaboration/index.md) using the **Share** button. +[retention period](/actors/storage/usage#named-and-unnamed-storages)) and [access rights](../collaboration/index.md) using the **Share** button. Click on the **API** button to view and test a queue's [API endpoints](/api/v2/storage-request-queues). ![Request queues detail](./images/request-queue-detail.png) @@ -558,9 +558,9 @@ A detailed tutorial on how to process one request queue with multiple Actor runs You can grant [access rights](../collaboration/index.md) to your request queue through the **Share** button under the **Actions** menu. For more details check the [full list of permissions](../collaboration/list_of_permissions.md). -You can also share request queues by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share request queues by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/account/collaboration/general-resource-access). -For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing of specific records when access is restricted, you can generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls). ### Share request queues between runs @@ -618,7 +618,7 @@ other_queue_client = apify_client.request_queue('jane-doe/old-queue') The same applies for the [Apify API](#apify-api) - you can use [the same endpoints](#apify-api) as you would normally do. -Check out the [Storage overview](/platform/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. +Check out the [Storage overview](/actors/storage/usage#sharing-storages-between-runs) for details on sharing storages between runs. ## Limits diff --git a/sources/platform/storage/usage.md b/sources/platform/actors/storage/usage.md similarity index 97% rename from sources/platform/storage/usage.md rename to sources/platform/actors/storage/usage.md index 5faa713722..54278aee2b 100644 --- a/sources/platform/storage/usage.md +++ b/sources/platform/actors/storage/usage.md @@ -3,7 +3,7 @@ title: Storage usage description: "Learn how to use Apify storage options: datasets, key-value stores, and request queues. Covers data retention, rate limiting, and secure sharing." sidebar_position: 9.1 category: platform -slug: /storage/usage +slug: /actors/storage/usage --- import StoragePricingCalculator from "@site/src/components/StoragePricingCalculator"; @@ -12,19 +12,19 @@ import StoragePricingCalculator from "@site/src/components/StoragePricingCalcula [Dataset](./dataset.md) storage allows you to store a series of data objects, such as results from web scraping, crawling, or data processing jobs. You can export your datasets in JSON, CSV, XML, RSS, Excel, or HTML formats. -![Dataset graphic](../images/datasets-overview.png) +![Dataset graphic](./images/datasets-overview.png) ## Key-value store The [key-value store](./key_value_store.md) is ideal for saving data records such as files, screenshots of web pages, and PDFs or for persisting your Actor's state. The records are accessible under a unique name and can be written and read quickly. -![Key-value store graphic](../images/key-value-overview.svg) +![Key-value store graphic](./images/key-value-overview.svg) ## Request queue [Request queues](./request_queue.md) allow you to dynamically maintain a queue of URLs of web pages. You can use this when recursively crawling websites: you start from initial URLs and add new links as they are found while skipping duplicates. -![Request queue graphic](../images/request-queue-overview.svg) +![Request queue graphic](./images/request-queue-overview.svg) ## Basic usage @@ -172,9 +172,9 @@ For example, storage names `janedoe~my-storage-1` and `janedoe~web-scrape-result You can grant [access rights](../collaboration/index.md) to other Apify users to view or modify your storages. Check the [full list of permissions](../collaboration/list_of_permissions.md). -You can also share storages by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/platform/collaboration/general-resource-access). +You can also share storages by link using their ID or name, depending on your account or resource-level general access setting. Learn how link-based access works in [General resource access](/account/collaboration/general-resource-access). -For one-off sharing when access is restricted, generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/platform/collaboration/general-resource-access#pre-signed-urls). +For one-off sharing when access is restricted, generate time-limited pre-signed URLs. See [Sharing restricted resources with pre-signed URLs](/account/collaboration/general-resource-access#pre-signed-urls). :::tip Accessing restricted storage resources via API @@ -196,7 +196,7 @@ Storage can be accessed from any [Actor](../actors/index.mdx) or [task](../actor :::info Accessing restricted storage resources between runs If a storage resource access is set to **Restricted**,the run from which it's accessed must have explicit access to it. -Learn how restricted access works in [General resource access](/platform/collaboration/general-resource-access). +Learn how restricted access works in [General resource access](/account/collaboration/general-resource-access). ::: diff --git a/sources/platform/get-started/build-an-actor/_category_.json b/sources/platform/get-started/build-an-actor/_category_.json new file mode 100644 index 0000000000..210b36c822 --- /dev/null +++ b/sources/platform/get-started/build-an-actor/_category_.json @@ -0,0 +1 @@ +{ "label": "Build an Actor", "position": 1, "collapsed": true, "collapsible": true } diff --git a/sources/platform/actors/development/quick-start/build_with_ai.md b/sources/platform/get-started/build-an-actor/build_with_ai.md similarity index 97% rename from sources/platform/actors/development/quick-start/build_with_ai.md rename to sources/platform/get-started/build-an-actor/build_with_ai.md index 56d44c9493..3d75f11b3b 100644 --- a/sources/platform/actors/development/quick-start/build_with_ai.md +++ b/sources/platform/get-started/build-an-actor/build_with_ai.md @@ -3,7 +3,7 @@ title: Build Actors with AI sidebar_position: 3 sidebar_label: Build with AI description: Build new Actors or improve existing ones using AI coding tools by providing the right context, prompts, Agent Skills, and the Apify MCP server. -slug: /actors/development/quick-start/build-with-ai +slug: /get-started/build-an-actor/build-with-ai toc_max_heading_level: 4 --- @@ -17,7 +17,7 @@ This guide provides best practices for building new Actors or improving existing :::tip Develop AI agents on Apify -Looking to build and deploy AI agents as Actors? See [Develop AI agents on Apify](/platform/actors/development/quick-start/develop-ai-agents) for the full stack - templates, sandboxes, LLM access, and monetization. +Looking to build and deploy AI agents as Actors? See [Develop AI agents on Apify](/get-started/build-an-actor/develop-ai-agents) for the full stack - templates, sandboxes, LLM access, and monetization. ::: diff --git a/sources/platform/actors/development/quick-start/develop_ai_agents.md b/sources/platform/get-started/build-an-actor/develop_ai_agents.md similarity index 90% rename from sources/platform/actors/development/quick-start/develop_ai_agents.md rename to sources/platform/get-started/build-an-actor/develop_ai_agents.md index 5cf707ab63..74551c1e68 100644 --- a/sources/platform/actors/development/quick-start/develop_ai_agents.md +++ b/sources/platform/get-started/build-an-actor/develop_ai_agents.md @@ -3,7 +3,7 @@ title: Develop AI agents on Apify description: Build and deploy AI agents on Apify with framework templates, sandboxes, OpenRouter for LLM access, and pay-per-event pricing. sidebar_position: 4.0 sidebar_label: Develop AI agents -slug: /actors/development/quick-start/develop-ai-agents +slug: /get-started/build-an-actor/develop-ai-agents --- The Apify platform provides everything you need to build, test, and deploy AI agents. This page walks you through the complete toolkit: templates, sandbox code execution, LLM access through OpenRouter, pay-per-event monetization, and deployment to [Apify Store](https://apify.com/store). @@ -18,7 +18,7 @@ This page covers: :::note Build with AI -Looking to use AI coding assistants (Claude Code, Cursor, GitHub Copilot) to help you develop Actors? See [Build Actors with AI](/platform/actors/development/quick-start/build-with-ai). +Looking to use AI coding assistants (Claude Code, Cursor, GitHub Copilot) to help you develop Actors? See [Build Actors with AI](/get-started/build-an-actor/build-with-ai). ::: @@ -26,7 +26,7 @@ Looking to use AI coding assistants (Claude Code, Cursor, GitHub Copilot) to hel - An [Apify account](https://console.apify.com/sign-up). - The [Apify CLI](/cli/docs/installation) installed. -- Your `APIFY_TOKEN` environment variable set. See [API token](/platform/integrations/api#api-token) for details. +- Your `APIFY_TOKEN` environment variable set. See [API token](/integrations/api#api-token) for details. ## Start from a template @@ -116,7 +116,7 @@ Pay-per-event pricing can charge users per token. To do this, extract token coun ## Monetize with pay-per-event pricing -[Pay-per-event (PPE)](/platform/actors/publishing/monetize/pay-per-event) pricing lets you charge users for specific actions your agent performs. Use `Actor.charge()` from the [JavaScript SDK](/sdk/js/reference/class/Actor#charge) or [Python SDK](/sdk/python/reference/class/Actor#charge) to bill users for events like API calls, generated results, or token usage. +[Pay-per-event (PPE)](/actors/publishing/monetize/pay-per-event) pricing lets you charge users for specific actions your agent performs. Use `Actor.charge()` from the [JavaScript SDK](/sdk/js/reference/class/Actor#charge) or [Python SDK](/sdk/python/reference/class/Actor#charge) to bill users for events like API calls, generated results, or token usage. ### PPE for AI agents @@ -137,7 +137,7 @@ If an Actor's net profit goes negative (for example, from free-tier users consum ::: -For detailed pricing guidance, see the [pay-per-event documentation](/platform/actors/publishing/monetize/pay-per-event). +For detailed pricing guidance, see the [pay-per-event documentation](/actors/publishing/monetize/pay-per-event). ## Deploy to Apify @@ -149,8 +149,8 @@ apify push This builds and deploys your Actor. Once deployed, you can: -- Publish to Apify Store - make your agent available to other users and start earning with PPE pricing. See the [publishing documentation](/platform/actors/publishing). +- Publish to Apify Store - make your agent available to other users and start earning with PPE pricing. See the [publishing documentation](/actors/publishing). - Run via API - trigger your agent programmatically through the [Apify API](/api/v2). - Set up schedules - run your agent on a recurring schedule. -For more deployment options, see the [deployment documentation](/platform/actors/development/deployment). +For more deployment options, see the [deployment documentation](/actors/development/deployment). diff --git a/sources/platform/actors/development/quick-start/images/actor-create-button.png b/sources/platform/get-started/build-an-actor/images/actor-create-button.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create-button.png rename to sources/platform/get-started/build-an-actor/images/actor-create-button.png diff --git a/sources/platform/actors/development/quick-start/images/actor-create-templates.png b/sources/platform/get-started/build-an-actor/images/actor-create-templates.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create-templates.png rename to sources/platform/get-started/build-an-actor/images/actor-create-templates.png diff --git a/sources/platform/actors/development/quick-start/images/actor-create.gif b/sources/platform/get-started/build-an-actor/images/actor-create.gif similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-create.gif rename to sources/platform/get-started/build-an-actor/images/actor-create.gif diff --git a/sources/platform/actors/development/quick-start/images/actor-input.png b/sources/platform/get-started/build-an-actor/images/actor-input.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-input.png rename to sources/platform/get-started/build-an-actor/images/actor-input.png diff --git a/sources/platform/actors/development/quick-start/images/actor-local-code.png b/sources/platform/get-started/build-an-actor/images/actor-local-code.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-local-code.png rename to sources/platform/get-started/build-an-actor/images/actor-local-code.png diff --git a/sources/platform/actors/development/quick-start/images/actor-local-run.png b/sources/platform/get-started/build-an-actor/images/actor-local-run.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-local-run.png rename to sources/platform/get-started/build-an-actor/images/actor-local-run.png diff --git a/sources/platform/actors/development/quick-start/images/actor-pull.png b/sources/platform/get-started/build-an-actor/images/actor-pull.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-pull.png rename to sources/platform/get-started/build-an-actor/images/actor-pull.png diff --git a/sources/platform/actors/development/quick-start/images/actor-source-code.png b/sources/platform/get-started/build-an-actor/images/actor-source-code.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/actor-source-code.png rename to sources/platform/get-started/build-an-actor/images/actor-source-code.png diff --git a/sources/platform/actors/development/quick-start/images/build-actor-in-web-ide.svg b/sources/platform/get-started/build-an-actor/images/build-actor-in-web-ide.svg similarity index 100% rename from sources/platform/actors/development/quick-start/images/build-actor-in-web-ide.svg rename to sources/platform/get-started/build-an-actor/images/build-actor-in-web-ide.svg diff --git a/sources/platform/actors/development/quick-start/images/claude.png b/sources/platform/get-started/build-an-actor/images/claude.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/claude.png rename to sources/platform/get-started/build-an-actor/images/claude.png diff --git a/sources/platform/actors/development/quick-start/images/copy-for-ai.png b/sources/platform/get-started/build-an-actor/images/copy-for-ai.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/copy-for-ai.png rename to sources/platform/get-started/build-an-actor/images/copy-for-ai.png diff --git a/sources/platform/actors/development/quick-start/images/copy-for-llm-button.svg b/sources/platform/get-started/build-an-actor/images/copy-for-llm-button.svg similarity index 100% rename from sources/platform/actors/development/quick-start/images/copy-for-llm-button.svg rename to sources/platform/get-started/build-an-actor/images/copy-for-llm-button.svg diff --git a/sources/platform/actors/development/quick-start/images/cursor.png b/sources/platform/get-started/build-an-actor/images/cursor.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/cursor.png rename to sources/platform/get-started/build-an-actor/images/cursor.png diff --git a/sources/platform/actors/development/quick-start/images/github-copilot.png b/sources/platform/get-started/build-an-actor/images/github-copilot.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/github-copilot.png rename to sources/platform/get-started/build-an-actor/images/github-copilot.png diff --git a/sources/platform/actors/development/quick-start/images/windsurf.png b/sources/platform/get-started/build-an-actor/images/windsurf.png similarity index 100% rename from sources/platform/actors/development/quick-start/images/windsurf.png rename to sources/platform/get-started/build-an-actor/images/windsurf.png diff --git a/sources/platform/actors/development/quick-start/index.mdx b/sources/platform/get-started/build-an-actor/index.mdx similarity index 75% rename from sources/platform/actors/development/quick-start/index.mdx rename to sources/platform/get-started/build-an-actor/index.mdx index 56be64aae1..33396b6019 100644 --- a/sources/platform/actors/development/quick-start/index.mdx +++ b/sources/platform/get-started/build-an-actor/index.mdx @@ -1,9 +1,9 @@ --- title: Actor development quick start sidebar_label: Quick start -sidebar_position: 0.5 +sidebar_position: 0 description: Create your first Apify Actor using the web IDE in Apify Console or locally with the Apify CLI, then choose from a library of ready-made code templates. -slug: /actors/development/quick-start +slug: /get-started/build-an-actor --- import Card from "@site/src/components/Card"; @@ -11,13 +11,13 @@ import CardGrid from "@site/src/components/CardGrid"; :::info Before you build -Before you start building your own Actor, try out a couple of existing Actors from [Apify Store](https://apify.com/store). See the [Running Actors](/platform/actors/running) section for more information on running existing Actors. +Before you start building your own Actor, try out a couple of existing Actors from [Apify Store](https://apify.com/store). See the [Running Actors](/actors/running) section for more information on running existing Actors. ::: ## Technology stack -Any code that can run inside of a Docker container can be turned into Apify [Actor](/platform/actors). This gives you freedom in choosing your technical stack, including programming language and technologies. +Any code that can run inside of a Docker container can be turned into Apify [Actor](/actors). This gives you freedom in choosing your technical stack, including programming language and technologies. But to fully benefit from running on top of the Apify platform, we recommend you choose either JavaScript/Node.js or Python, where Apify provides first-level support regarding its SDK, API clients, and learning materials. @@ -31,16 +31,16 @@ You can choose from three main ways to build your Actor, depending on your prefe diff --git a/sources/platform/actors/development/quick-start/start_locally.md b/sources/platform/get-started/build-an-actor/start_locally.md similarity index 87% rename from sources/platform/actors/development/quick-start/start_locally.md rename to sources/platform/get-started/build-an-actor/start_locally.md index 82ccc5d4a3..191de61f7f 100644 --- a/sources/platform/actors/development/quick-start/start_locally.md +++ b/sources/platform/get-started/build-an-actor/start_locally.md @@ -3,7 +3,7 @@ title: Local Actor development sidebar_label: Local development sidebar_position: 1 description: Create your first Actor locally using the Apify CLI, configure its input and storage, then deploy it to the Apify platform to run in the cloud. -slug: /actors/development/quick-start/locally +slug: /get-started/build-an-actor/locally --- import PromptButton from "@site/src/components/PromptButton"; @@ -93,11 +93,11 @@ This JSON Schema validates input automatically (no error handling needed), power ::: -Find more info in the [Input schema](/platform/actors/development/actor-definition/input-schema) documentation. +Find more info in the [Input schema](/actors/development/actor-definition/input-schema) documentation. #### Actor's `storage` -The Actor system provides two storage types for files and results: [key-value](/platform/storage/key-value-store) store and [dataset](/platform/storage/dataset). +The Actor system provides two storage types for files and results: [key-value](/actors/storage/key-value-store) store and [dataset](/actors/storage/dataset). ##### Key-value store @@ -111,8 +111,8 @@ The dataset stores a series of data objects from web scraping, crawling, or data You define the Actor output using the Output schema files: -- [Dataset Schema Specification](/platform/actors/development/actor-definition/dataset-schema) -- [Key-value Store Schema Specification](/platform/actors/development/actor-definition/key-value-store-schema) +- [Dataset Schema Specification](/actors/development/actor-definition/dataset-schema) +- [Key-value Store Schema Specification](/actors/development/actor-definition/key-value-store-schema) The system uses this to generate an immutable JSON file that tells users where to find the Actor's results. @@ -146,5 +146,5 @@ Good job! 🎉 You're ready to develop your Actor. You can make changes to your - Visit the [Apify Academy](/academy) to access a comprehensive collection of tutorials, documentation, and learning resources. - To understand Actors in detail, read the [Actor Whitepaper](https://whitepaper.actor/). -- Check [Continuous integration](/platform/actors/development/deployment/continuous-integration) documentation to automate your Actor development process. -- After you finish building your first Actor, you can [share it with other users and even monetize it](/platform/actors/publishing). +- Check [Continuous integration](/actors/development/deployment/continuous-integration) documentation to automate your Actor development process. +- After you finish building your first Actor, you can [share it with other users and even monetize it](/actors/publishing). diff --git a/sources/platform/actors/development/quick-start/start_web_ide.md b/sources/platform/get-started/build-an-actor/start_web_ide.md similarity index 92% rename from sources/platform/actors/development/quick-start/start_web_ide.md rename to sources/platform/get-started/build-an-actor/start_web_ide.md index 1c2c542151..ef5762b1e0 100644 --- a/sources/platform/actors/development/quick-start/start_web_ide.md +++ b/sources/platform/get-started/build-an-actor/start_web_ide.md @@ -2,7 +2,7 @@ title: Web IDE sidebar_position: 2 description: Create and run your first Actor using the web IDE in Apify Console, from writing your first lines of code to deploying it live in the cloud. -slug: /actors/development/quick-start/web-ide +slug: /get-started/build-an-actor/web-ide --- import Tabs from '@theme/Tabs'; @@ -64,7 +64,7 @@ Finally, it's time to run the Actor: 1. _(Optional)_ To customize the run, expand the **Run options** section. You can adjust the following options: - **Build** – select the build version to run. - **Timeout** – set the timeout for the run in seconds. - - **Memory limit** – allocate the memory for the run. For details, see [Usage and resources](/platform/actors/running/usage-and-resources). + - **Memory limit** – allocate the memory for the run. For details, see [Usage and resources](/actors/running/usage-and-resources). - **Maximum cost per run**. 1. Click **Start**. @@ -136,5 +136,5 @@ Once you've made the desired changes, you can push the updated code back to the - Visit the [Apify Academy](/academy) to access a comprehensive collection of tutorials, documentation, and learning resources. - To understand Actors in detail, read the [Actor Whitepaper](https://whitepaper.actor/). -- Check [Continuous integration](/platform/actors/development/deployment/continuous-integration) documentation to automate your Actor development process. -- After you finish building your first Actor, you can [share it with other users and even monetize it](/platform/actors/publishing). +- Check [Continuous integration](/actors/development/deployment/continuous-integration) documentation to automate your Actor development process. +- After you finish building your first Actor, you can [share it with other users and even monetize it](/actors/publishing). diff --git a/sources/platform/get-started/index.mdx b/sources/platform/get-started/index.mdx new file mode 100644 index 0000000000..f8b0baa6c8 --- /dev/null +++ b/sources/platform/get-started/index.mdx @@ -0,0 +1,35 @@ +--- +title: Get started +description: Find your way around the Apify platform - build, run, integrate, automate. +sidebar_label: Overview +sidebar_position: 0 +slug: /get-started +--- + +import Card from "@site/src/components/Card"; +import CardGrid from "@site/src/components/CardGrid"; + +Find your way around the Apify platform. Pick a path below. + + + + + + + diff --git a/sources/platform/homepage_content.json b/sources/platform/homepage_content.json index 2c5fc61f78..e23eaa0732 100644 --- a/sources/platform/homepage_content.json +++ b/sources/platform/homepage_content.json @@ -2,31 +2,31 @@ { "title": "Actors", "description": "Learn how to develop, run and share own web scraping and automation tools.", - "to": "/platform/actors" + "to": "/actors" }, { "title": "Storage", "description": "Store anything from images and key-value pairs to structured output data.", - "to": "/platform/storage" + "to": "/actors/storage" }, { "title": "Proxy", "description": "Learn to anonymously and reliably access websites in scraping/automation jobs.", - "to": "/platform/proxy" + "to": "/actors/proxy" }, { "title": "Schedules", "description": "Learn how to automatically start your Actor and task runs.", - "to": "/platform/schedules" + "to": "/actors/running/schedules" }, { "title": "Integrations", "description": "Learn how to connect the Apify platform with your projects.", - "to": "/platform/integrations" + "to": "/integrations" }, { "title": "Monitoring", "description": "Learn how to check the performance of your Actors, validate your data and receive alerts.", - "to": "/platform/monitoring" + "to": "/actors/running/monitoring" } ] diff --git a/sources/platform/index.mdx b/sources/platform/index.mdx deleted file mode 100644 index d0710fb402..0000000000 --- a/sources/platform/index.mdx +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Apify Platform documentation -description: Apify is a cloud platform for web scraping, data extraction, and automation. Run pre-built Actors or develop your own tools on the Apify platform. -slug: / -hide_table_of_contents: true -sidebar_position: 0 -sidebar_label: Home ---- -import Card from "@site/src/components/Card"; -import CardGrid from "@site/src/components/CardGrid"; -import homepageContent from "./homepage_content.json"; - - -**Apify** is a cloud platform and marketplace for web data extraction and automation tools called **Actors**. - -## Get 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. - - - - - - - -## Contents - - - { - homepageContent.map(({ title, description, to }, i) => ( - ) - ) - } - diff --git a/sources/platform/integrations/actors/_category_.json b/sources/platform/integrations/actors/_category_.json new file mode 100644 index 0000000000..8c668cf9d2 --- /dev/null +++ b/sources/platform/integrations/actors/_category_.json @@ -0,0 +1 @@ +{ "label": "Actor-to-Actor", "position": 3, "collapsed": true, "collapsible": true } diff --git a/sources/platform/integrations/actors/_category_.yml b/sources/platform/integrations/actors/_category_.yml deleted file mode 100644 index 51e68dbcf6..0000000000 --- a/sources/platform/integrations/actors/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -position: 3 diff --git a/sources/platform/integrations/actors/index.md b/sources/platform/integrations/actors/index.md index 5d3aeea41f..d356bb16fe 100644 --- a/sources/platform/integrations/actors/index.md +++ b/sources/platform/integrations/actors/index.md @@ -12,7 +12,7 @@ You can check out a catalog of Integration Actors within [Apify Store](https://a ::: -Actor integrations provide a way to connect your Actors with other Actors or tasks easily. They provide a new level of flexibility, as adding a new integration simply means creating [integration-ready Actors](/platform/integrations/actors/integration-ready-actors). Thus, new integrations can be created by the community itself. +Actor integrations provide a way to connect your Actors with other Actors or tasks easily. They provide a new level of flexibility, as adding a new integration simply means creating [integration-ready Actors](/integrations/actors/integration-ready-actors). Thus, new integrations can be created by the community itself. @@ -27,7 +27,7 @@ To integrate one Actor with another: This leads you to a setup screen, where you can provide: -- **Triggers**: Events that will trigger the integrated Actor. These are the same as webhook [event types](/platform/integrations/webhooks/events) (*run succeeded*, *build failed*, etc.) +- **Triggers**: Events that will trigger the integrated Actor. These are the same as webhook [event types](/integrations/webhooks/events) (*run succeeded*, *build failed*, etc.) ![Integration trigger select](./images/integration_triggers.png) diff --git a/sources/platform/integrations/actors/integration_ready_actors.md b/sources/platform/integrations/actors/integration_ready_actors.md index 2709d372f1..0774e5ca44 100644 --- a/sources/platform/integrations/actors/integration_ready_actors.md +++ b/sources/platform/integrations/actors/integration_ready_actors.md @@ -85,7 +85,7 @@ In the above example, we're focusing on accessing a run's default dataset, but t ## Make your Actor available to other users -To allow other users to use your Actor as an integration, all you need to do is [publish it in Apify Store](/platform/actors/publishing), so users can then integrate it using the **Connect Actor or task** button on the **Integrations** tab of any Actor. While publishing the Actor is enough, there are two ways to make it more visible to users. +To allow other users to use your Actor as an integration, all you need to do is [publish it in Apify Store](/actors/publishing), so users can then integrate it using the **Connect Actor or task** button on the **Integrations** tab of any Actor. While publishing the Actor is enough, there are two ways to make it more visible to users. For Actors that are generic enough to be used with most other Actors, it's possible to have them listed under **Generic integrations** in the **Integrations** tab. This includes (but is not limited to) Actors that upload datasets to databases, send notifications through various messaging systems, create issues in ticketing systems, etc. To have your Actor listed under the generic integrations, [contact support](mailto:support@apify.com?subject=Actor%20generic%20integration). diff --git a/sources/platform/integrations/ai/_category_.json b/sources/platform/integrations/ai/_category_.json new file mode 100644 index 0000000000..d81334783f --- /dev/null +++ b/sources/platform/integrations/ai/_category_.json @@ -0,0 +1 @@ +{ "label": "AI and LLMs", "position": 1, "collapsed": true, "collapsible": true } diff --git a/sources/platform/integrations/ai/_category_.yml b/sources/platform/integrations/ai/_category_.yml deleted file mode 100644 index 2bc8d69435..0000000000 --- a/sources/platform/integrations/ai/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: 'AI' -position: 6 diff --git a/sources/platform/integrations/ai/agno.md b/sources/platform/integrations/ai/agno.md index 5413610beb..ec4dab5cd9 100644 --- a/sources/platform/integrations/ai/agno.md +++ b/sources/platform/integrations/ai/agno.md @@ -132,6 +132,6 @@ Agno supports any Apify Actor via the ApifyTools class. You can specify a single - [How to build an AI Agent](https://blog.apify.com/how-to-build-an-ai-agent/) - [Agno Framework Documentation](https://docs.agno.com) - [Apify Platform Documentation](https://docs.apify.com) -- [Apify Actor Documentation](/platform/actors) +- [Apify Actor Documentation](/actors) - [Apify Store - Browse available Actors](https://apify.com/store) - [Agno Apify Toolkit Documentation](https://docs.agno.com/tools/toolkits/others/apify#apify) diff --git a/sources/platform/integrations/ai/google-adk.md b/sources/platform/integrations/ai/google-adk.md index a3fd3940b3..a664242f95 100644 --- a/sources/platform/integrations/ai/google-adk.md +++ b/sources/platform/integrations/ai/google-adk.md @@ -18,7 +18,7 @@ Apify is a marketplace of web scraping and automation tools, AI agents, and MCP ### Prerequisites -- _Apify API token_: To use Apify Actors in Google ADK, you need an Apify API token. To obtain your token, check [Apify documentation](/platform/integrations/api#api-token). +- _Apify API token_: To use Apify Actors in Google ADK, you need an Apify API token. To obtain your token, check [Apify documentation](/integrations/api#api-token). - _Python packages_: Install the following Python packages: ```bash diff --git a/sources/platform/integrations/ai/lindy.md b/sources/platform/integrations/ai/lindy.md index 4661e7c116..795cab8e29 100644 --- a/sources/platform/integrations/ai/lindy.md +++ b/sources/platform/integrations/ai/lindy.md @@ -49,7 +49,7 @@ This section demonstrates how to integrate Apify's data extraction capabilities :::tip Actor Availability -You have access to thousands of Actors available on the [Apify Store](https://apify.com/store). Please note that Actors using the _rental pricing model_ are not available for use with this integration. For details on Actor pricing models, refer to our [Pricing Documentation](/platform/actors/publishing/monetize#rental-pricing-model). +You have access to thousands of Actors available on the [Apify Store](https://apify.com/store). Please note that Actors using the _rental pricing model_ are not available for use with this integration. For details on Actor pricing models, refer to our [Pricing Documentation](/actors/publishing/monetize#rental-pricing-model). ::: diff --git a/sources/platform/integrations/ai/manus.md b/sources/platform/integrations/ai/manus.md index 7f0478bff1..f8104a4286 100644 --- a/sources/platform/integrations/ai/manus.md +++ b/sources/platform/integrations/ai/manus.md @@ -85,7 +85,7 @@ Manus will call `search-actors` to find [Google Search Scraper](https://apify.co ## Configure tools -After connecting, the Apify MCP server exposes a default set of tools for Actor discovery (`search-actors`, `fetch-actor-details`, `call-actor`, `get-actor-output`), web browsing (`apify/rag-web-browser`), and documentation search (`search-apify-docs`, `fetch-apify-docs`). See the [full tool reference](/platform/integrations/mcp#available-tools) for the complete list. +After connecting, the Apify MCP server exposes a default set of tools for Actor discovery (`search-actors`, `fetch-actor-details`, `call-actor`, `get-actor-output`), web browsing (`apify/rag-web-browser`), and documentation search (`search-apify-docs`, `fetch-apify-docs`). See the [full tool reference](/integrations/mcp#available-tools) for the complete list. To control which tools are available, append a `tools=` query parameter to the server URL: @@ -187,8 +187,8 @@ If the OAuth prompt fails or you can't complete the login flow, you can connect ## Related integrations -- [ChatGPT integration](/platform/integrations/chatgpt) - Connect the Apify MCP server to ChatGPT -- [MCP server integration](/platform/integrations/mcp) - Use the Apify MCP server with Claude Desktop, VS Code, and other clients +- [ChatGPT integration](/integrations/chatgpt) - Connect the Apify MCP server to ChatGPT +- [MCP server integration](/integrations/mcp) - Use the Apify MCP server with Claude Desktop, VS Code, and other clients ## Resources diff --git a/sources/platform/integrations/ai/mcp/chatgpt.md b/sources/platform/integrations/ai/mcp/chatgpt.md index 7168b1e816..ed3b091f1d 100644 --- a/sources/platform/integrations/ai/mcp/chatgpt.md +++ b/sources/platform/integrations/ai/mcp/chatgpt.md @@ -78,12 +78,12 @@ You should see ChatGPT calling Apify tools - such as the [RAG Web Browser](https ## Related integrations -- [OpenAI Assistants integration](/platform/integrations/openai-assistants) - Use Apify Actors with OpenAI Assistants API via function calling -- [OpenAI Agents SDK integration](/platform/integrations/openai-agents) - Integrate Apify MCP server with OpenAI Agents SDK +- [OpenAI Assistants integration](/integrations/openai-assistants) - Use Apify Actors with OpenAI Assistants API via function calling +- [OpenAI Agents SDK integration](/integrations/openai-agents) - Integrate Apify MCP server with OpenAI Agents SDK ## Resources - [ChatGPT Developer mode](https://platform.openai.com/docs/guides/developer-mode) - Learn how to enable Developer Mode in ChatGPT - [Connectors and MCP servers](https://platform.openai.com/docs/guides/tools-connectors-mcp) - Official OpenAI documentation on using MCP servers with ChatGPT - [Apify MCP server](https://mcp.apify.com) - Interactive configuration tool for the Apify MCP server -- [Apify MCP documentation](/platform/integrations/mcp) - Complete guide to using the Apify MCP server +- [Apify MCP documentation](/integrations/mcp) - Complete guide to using the Apify MCP server diff --git a/sources/platform/integrations/ai/mcp/claude-desktop.md b/sources/platform/integrations/ai/mcp/claude-desktop.md index d2c5421849..03eebb863c 100644 --- a/sources/platform/integrations/ai/mcp/claude-desktop.md +++ b/sources/platform/integrations/ai/mcp/claude-desktop.md @@ -10,7 +10,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import ThirdPartyDisclaimer from '@site/sources/_partials/_third-party-integration.mdx'; -Connect [Claude Desktop](https://claude.ai/download) to the [Apify MCP server](/platform/integrations/mcp) to give your conversations access to thousands of Actors from [Apify Store](https://apify.com/store). Once connected, Claude can search for, run, and retrieve results from Actors directly in your chat. +Connect [Claude Desktop](https://claude.ai/download) to the [Apify MCP server](/integrations/mcp) to give your conversations access to thousands of Actors from [Apify Store](https://apify.com/store). Once connected, Claude can search for, run, and retrieve results from Actors directly in your chat. @@ -179,6 +179,6 @@ A system-wide installation can coexist with an existing version-manager installa ## Next steps -- [Apify MCP server](/platform/integrations/mcp) - Explore tool selection, available tools, telemetry, and rate limits +- [Apify MCP server](/integrations/mcp) - Explore tool selection, available tools, telemetry, and rate limits - [Apify MCP server configurator](https://mcp.apify.com) - Select tools visually and copy configuration - [Apify MCP server on GitHub](https://github.com/apify/apify-mcp-server) - Report bugs and suggest features diff --git a/sources/platform/integrations/ai/mcp/index.md b/sources/platform/integrations/ai/mcp/index.md index 8615c20707..62215eff94 100644 --- a/sources/platform/integrations/ai/mcp/index.md +++ b/sources/platform/integrations/ai/mcp/index.md @@ -2,7 +2,7 @@ title: Apify MCP server sidebar_label: MCP server description: Learn how to use the Apify MCP server to integrate Apify's library of Actors into your AI agents or large language model-based applications. -sidebar_position: 1 +sidebar_position: 0 slug: /integrations/mcp toc_max_heading_level: 4 --- @@ -212,7 +212,7 @@ VS Code supports MCP through GitHub Copilot's agent mode (requires Copilot subsc You can also search for "Apify" in the connector directory and install it directly. -For detailed setup options and troubleshooting, see the [Claude Desktop integration guide](/platform/integrations/claude-desktop). +For detailed setup options and troubleshooting, see the [Claude Desktop integration guide](/integrations/claude-desktop). @@ -309,8 +309,8 @@ For a detailed overview of client support for dynamic discovery, see the [MCP cl Agentic payments allow AI agents to autonomously pay for Actor runs without requiring an Apify API token. The Apify MCP server supports two payment methods: -- [x402 protocol](/platform/integrations/x402) - Direct on-chain payments using USDC on the [Base](https://www.base.org/) blockchain via the open [x402](https://www.x402.org/) standard. -- [Skyfire](/platform/integrations/skyfire) - Managed payment tokens through the [Skyfire](https://www.skyfire.xyz/) payment platform. +- [x402 protocol](/integrations/x402) - Direct on-chain payments using USDC on the [Base](https://www.base.org/) blockchain via the open [x402](https://www.x402.org/) standard. +- [Skyfire](/integrations/skyfire) - Managed payment tokens through the [Skyfire](https://www.skyfire.xyz/) payment platform. For setup instructions and details, see the individual integration pages. @@ -379,7 +379,7 @@ documentation queries. If you exceed this limit, you'll receive a `429` response :::tip Claude Desktop issues -For Claude Desktop-specific troubleshooting (tools not loading, connection errors, corrupted cache), see [Claude Desktop troubleshooting](/platform/integrations/claude-desktop#troubleshooting). +For Claude Desktop-specific troubleshooting (tools not loading, connection errors, corrupted cache), see [Claude Desktop troubleshooting](/integrations/claude-desktop#troubleshooting). ::: diff --git a/sources/platform/integrations/ai/openai_agents.md b/sources/platform/integrations/ai/openai_agents.md index 801976c754..cd0be7e541 100644 --- a/sources/platform/integrations/ai/openai_agents.md +++ b/sources/platform/integrations/ai/openai_agents.md @@ -268,8 +268,8 @@ For a comprehensive example with error handling and reporting, refer to the [Ope ## Related integrations -- [ChatGPT integration](/platform/integrations/chatgpt) - Add Apify MCP server as a custom connector in ChatGPT -- [OpenAI Assistants integration](/platform/integrations/openai-assistants) - Use Apify Actors with OpenAI Assistants API via function calling +- [ChatGPT integration](/integrations/chatgpt) - Add Apify MCP server as a custom connector in ChatGPT +- [OpenAI Assistants integration](/integrations/openai-assistants) - Use Apify Actors with OpenAI Assistants API via function calling ## Resources @@ -278,5 +278,5 @@ For a comprehensive example with error handling and reporting, refer to the [Ope - [OpenAI Agent MCP Tester Actor](https://apify.com/jiri.spilka/openai-agent-mcp-tester) - A specialized Actor for testing MCP server integration - [OpenAI Agent MCP Tester GitHub repository](https://github.com/apify/openai-agent-mcp-tester) - Source code for the MCP tester Actor - [Apify MCP server](https://mcp.apify.com) - Interactive configuration tool for the Apify MCP server -- [Apify MCP documentation](/platform/integrations/mcp) - Complete guide to using the Apify MCP server +- [Apify MCP documentation](/integrations/mcp) - Complete guide to using the Apify MCP server - [Model Context Protocol specification](https://modelcontextprotocol.io/docs/getting-started/intro) - Learn about the MCP specification diff --git a/sources/platform/integrations/ai/openai_assistants.md b/sources/platform/integrations/ai/openai_assistants.md index 86c6efceff..a38a6d79cf 100644 --- a/sources/platform/integrations/ai/openai_assistants.md +++ b/sources/platform/integrations/ai/openai_assistants.md @@ -412,8 +412,8 @@ for m in client.beta.threads.messages.list(thread_id=run.thread_id): ## Related integrations -- [ChatGPT integration](/platform/integrations/chatgpt) - Add Apify MCP server as a custom connector in ChatGPT -- [OpenAI Agents SDK integration](/platform/integrations/openai-agents) - Integrate Apify MCP server with OpenAI Agents SDK +- [ChatGPT integration](/integrations/chatgpt) - Add Apify MCP server as a custom connector in ChatGPT +- [OpenAI Agents SDK integration](/integrations/openai-agents) - Integrate Apify MCP server with OpenAI Agents SDK ## Resources diff --git a/sources/platform/integrations/ai/upsonic.md b/sources/platform/integrations/ai/upsonic.md index e8ecebd0ee..401f6448e1 100644 --- a/sources/platform/integrations/ai/upsonic.md +++ b/sources/platform/integrations/ai/upsonic.md @@ -162,5 +162,5 @@ Browse the [Apify Store](https://apify.com/store) to find Actors for social medi - [Upsonic documentation](https://docs.upsonic.ai) - [Upsonic ApifyTools reference](https://docs.upsonic.ai/concepts/tools/scraping-tools/apify) - [Upsonic restaurant scout example](https://github.com/Upsonic/Examples/tree/master/examples/web_search_and_scraping/apify_google_maps_restaurant_scout) -- [Apify Actor documentation](/platform/actors) +- [Apify Actor documentation](/actors) - [Browse Actors on Apify Store](https://apify.com/store) diff --git a/sources/platform/integrations/ai/x402.md b/sources/platform/integrations/ai/x402.md index bf3b06c31b..d33af46b4b 100644 --- a/sources/platform/integrations/ai/x402.md +++ b/sources/platform/integrations/ai/x402.md @@ -10,7 +10,7 @@ With the [x402 protocol](https://www.x402.org/), AI agents can run Apify Actors :::caution Experimental feature -Agentic payments are experimental and may change as payment protocols evolve. Only Actors with the [Pay Per Event](/platform/actors/publishing/monetize/pay-per-event) pricing model are supported. [Standby](/platform/actors/running/standby) Actors are not supported. +Agentic payments are experimental and may change as payment protocols evolve. Only Actors with the [Pay Per Event](/actors/publishing/monetize/pay-per-event) pricing model are supported. [Standby](/actors/running/standby) Actors are not supported. ::: @@ -44,7 +44,7 @@ Fund the displayed wallet address with USDC on Base mainnet. ## Use x402 with Apify MCP server -The [Apify MCP server](/platform/integrations/mcp) is the recommended way to get started. `mcpc` handles payment signing and retries automatically. +The [Apify MCP server](/integrations/mcp) is the recommended way to get started. `mcpc` handles payment signing and retries automatically. ### How it works @@ -124,6 +124,6 @@ Both paths (MCP server and direct API) share the same pricing model: ## Next steps - Browse [Apify Store](https://apify.com/store) for supported Actors to use with x402. -- Learn more about [Pay Per Event](/platform/actors/publishing/monetize/pay-per-event) pricing for Actors. -- Set up the [Apify MCP server](/platform/integrations/mcp) for automated tool discovery and payment handling. +- Learn more about [Pay Per Event](/actors/publishing/monetize/pay-per-event) pricing for Actors. +- Set up the [Apify MCP server](/integrations/mcp) for automated tool discovery and payment handling. - Read the [x402 protocol specification](https://www.x402.org/) for technical details on the payment standard. diff --git a/sources/platform/integrations/data-storage/_category_.json b/sources/platform/integrations/data-storage/_category_.json new file mode 100644 index 0000000000..f875c3ec90 --- /dev/null +++ b/sources/platform/integrations/data-storage/_category_.json @@ -0,0 +1 @@ +{ "label": "Data storage", "position": 5, "collapsed": true, "collapsible": true } diff --git a/sources/platform/integrations/data-storage/_category_.yml b/sources/platform/integrations/data-storage/_category_.yml deleted file mode 100644 index e5d0354cd7..0000000000 --- a/sources/platform/integrations/data-storage/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: Data storage -position: 5 diff --git a/sources/platform/integrations/data-storage/airbyte.md b/sources/platform/integrations/data-storage/airbyte.md index 29ef49a614..de9d4494e2 100644 --- a/sources/platform/integrations/data-storage/airbyte.md +++ b/sources/platform/integrations/data-storage/airbyte.md @@ -39,4 +39,4 @@ To find your Apify API token, you need to navigate to the **Settings** tab and s And that's it! You now have Apify datasets set up as a Source, and you can use Airbyte to transfer your datasets to one of the available destinations. -To learn more about how to setup a Connection, visit [Airbyte's documentation](https://docs.airbyte.com/platform/using-airbyte/getting-started/set-up-a-connection) +To learn more about how to setup a Connection, visit [Airbyte's documentation](https://docs.airbyte.com/using-airbyte/getting-started/set-up-a-connection) diff --git a/sources/platform/integrations/data-storage/airtable/index.md b/sources/platform/integrations/data-storage/airtable/index.md index c1026ab870..e973a7bb6d 100644 --- a/sources/platform/integrations/data-storage/airtable/index.md +++ b/sources/platform/integrations/data-storage/airtable/index.md @@ -2,7 +2,7 @@ title: Airtable integration description: Connect Apify with Airtable to automatically upload Actor run results to your base. Use the Apify extension on Airtable or the Console integration. sidebar_label: Airtable -sidebar_position: 4 +sidebar_position: 0 slug: /integrations/airtable --- @@ -28,7 +28,7 @@ You can integrate Apify with Airtable using one of two options: - _Apify extension_ on Airtable website. - _Console integration_ on the Actor page. -This guide explains how to use the _Apify extension_. For console integration instructions, see the [Console integration](/platform/integrations/airtable/console) documentation +This guide explains how to use the _Apify extension_. For console integration instructions, see the [Console integration](/integrations/airtable/console) documentation ## Setup diff --git a/sources/platform/integrations/index.mdx b/sources/platform/integrations/index.mdx index ba6fdabc3d..ef03ada532 100644 --- a/sources/platform/integrations/index.mdx +++ b/sources/platform/integrations/index.mdx @@ -1,7 +1,7 @@ --- title: Integrations description: Connect the Apify platform to external services, data pipelines, and automation workflows using APIs, webhooks, and third-party integrations. -sidebar_position: 11 +sidebar_position: 0 category: platform slug: /integrations --- @@ -25,19 +25,19 @@ Apify‘s RESTful API allows you to interact with the platform programmatically. @@ -48,40 +48,40 @@ Apify offers easy-to-set-up solutions for common scenarios, like uploading your {/* Only show Asana once we have the videos ready for it */} @@ -89,7 +89,7 @@ Apify offers easy-to-set-up solutions for common scenarios, like uploading your */} @@ -103,49 +103,49 @@ If you use one of the main integration platforms, Apify's support is here for yo @@ -158,13 +158,13 @@ The Apify platform integrates with popular ETL and data pipeline services, enabl @@ -177,100 +177,100 @@ These integrations allow you to use Apify Actors as tools and data sources. diff --git a/sources/platform/integrations/integrate_with_apify.md b/sources/platform/integrations/integrate_with_apify.md index ede30afa0e..8f08e0bf43 100644 --- a/sources/platform/integrations/integrate_with_apify.md +++ b/sources/platform/integrations/integrate_with_apify.md @@ -23,7 +23,7 @@ An Apify integration can be _general_, allowing users to integrate any Actor fro General integrations allow users to integrate Actors into their workflows by connecting Apify with other platforms. Examples include: - [Zapier](./workflows-and-notifications/zapier.md) integration allows Zapier users to enrich their automation workflows with data from the web or to add additional Actions performed by [Apify Actors](https://apify.com/store). -- [Keboola](/platform/integrations/keboola) integration enables Keboola users to easily pull data crawled from the web into their data pipelines. +- [Keboola](/integrations/keboola) integration enables Keboola users to easily pull data crawled from the web into their data pipelines. ### Actor-specific integrations diff --git a/sources/platform/integrations/programming/_category_.json b/sources/platform/integrations/programming/_category_.json new file mode 100644 index 0000000000..275d268e83 --- /dev/null +++ b/sources/platform/integrations/programming/_category_.json @@ -0,0 +1 @@ +{ "label": "Programming", "position": 2, "collapsed": true, "collapsible": true } diff --git a/sources/platform/integrations/programming/_category_.yml b/sources/platform/integrations/programming/_category_.yml deleted file mode 100644 index 6c538173b6..0000000000 --- a/sources/platform/integrations/programming/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: 'Programming' -position: 2 diff --git a/sources/platform/integrations/programming/api.md b/sources/platform/integrations/programming/api.md index 8bdf94b5d2..317be113cc 100644 --- a/sources/platform/integrations/programming/api.md +++ b/sources/platform/integrations/programming/api.md @@ -153,7 +153,7 @@ When you run an Actor with a scoped token in this mode, Apify will inject a toke This way you can be sure that Actors won't accidentally - or intentionally - access any data they shouldn't. However, Actors might not function properly if the scope is not sufficient. :::caution Standby mode limitation -Restricted access mode is not supported for Actors running in [Standby mode](/platform/actors/running/standby). While you can send standby requests using a scoped token configured with restricted access, functionality is not guaranteed. +Restricted access mode is not supported for Actors running in [Standby mode](/actors/running/standby). While you can send standby requests using a scoped token configured with restricted access, functionality is not guaranteed. ::: :::tip Transitive restrictions @@ -162,7 +162,7 @@ This restriction is _transitive_, which means that if the Actor runs another Act #### Default run storages -When Apify [runs an Actor](/platform/actors/running/runs-and-builds#runs), it automatically creates a set of default storages (a dataset, a key-value store and request queue) that the Actor can use in runtime. +When Apify [runs an Actor](/actors/running/runs-and-builds#runs), it automatically creates a set of default storages (a dataset, a key-value store and request queue) that the Actor can use in runtime. You can configure whether the scoped token you are going use to run the Actor should get access to these default storages. @@ -172,7 +172,7 @@ If it’s **on**, the token can implicitly access the default storage of the Act If the toggle is **off**, the token can still trigger and inspect runs, but access to the default storages is restricted: -- For accounts with **Restricted general resource access**, the token cannot read or write to default storages. [Learn more about restricted general resource access](/platform/collaboration/general-resource-access). +- For accounts with **Restricted general resource access**, the token cannot read or write to default storages. [Learn more about restricted general resource access](/account/collaboration/general-resource-access). - For accounts with **Unrestricted general resource access**, the default storages can still be read anonymously using their IDs, but writing is prevented. :::tip Clean up run data diff --git a/sources/platform/integrations/programming/webhooks/actions.md b/sources/platform/integrations/programming/webhooks/actions.md index 75a8e98ba4..c5275c9362 100644 --- a/sources/platform/integrations/programming/webhooks/actions.md +++ b/sources/platform/integrations/programming/webhooks/actions.md @@ -48,7 +48,7 @@ For security reasons, include a secret token in the webhook URL to ensure that o :::tip Headers template -You can also use [Headers template](/platform/integrations/webhooks/actions#headers-template) for this purpose. +You can also use [Headers template](/integrations/webhooks/actions#headers-template) for this purpose. ::: @@ -170,8 +170,8 @@ The description is an optional string that you can add to the webhook. It serves | ----------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `userId` | string | ID of the Apify user who owns the webhook. | | `createdAt` | string | ISO string date of the webhook's trigger event. | -| `eventType` | string | Type of the trigger event, see [Events](/platform/integrations/webhooks/events). | -| `eventData` | Object | Data associated with the trigger event, see [Events](/platform/integrations/webhooks/events). | +| `eventType` | string | Type of the trigger event, see [Events](/integrations/webhooks/events). | +| `eventData` | Object | Data associated with the trigger event, see [Events](/integrations/webhooks/events). | | `resource` | Object | The resource that caused the trigger event. | | `globals` | Object | Data available in global context. Contains `dateISO` (date of webhook's trigger event in ISO 8601 format) and `dateUnix` (date of trigger event in Unix time in seconds) | diff --git a/sources/platform/integrations/programming/webhooks/events.md b/sources/platform/integrations/programming/webhooks/events.md index 162e529b8d..bc071bc373 100644 --- a/sources/platform/integrations/programming/webhooks/events.md +++ b/sources/platform/integrations/programming/webhooks/events.md @@ -38,7 +38,7 @@ To fetch the results from the Actor run, you can use the `actorRunId` event prop https://api.apify.com/v2/actor-runs/[ACTOR_RUN_ID]/dataset/items?token=[TOKEN] ``` -Apart from the event data, actions also have the `resource` object available, which can provide more details about the object that triggered the event. For more information about the `resource` objects, see the [Webhooks Actions page](/platform/integrations/webhooks/actions#resource) +Apart from the event data, actions also have the `resource` object available, which can provide more details about the object that triggered the event. For more information about the `resource` objects, see the [Webhooks Actions page](/integrations/webhooks/actions#resource) ## Actor build events diff --git a/sources/platform/integrations/programming/webhooks/index.md b/sources/platform/integrations/programming/webhooks/index.md index a0436146c5..6fa226e1ca 100644 --- a/sources/platform/integrations/programming/webhooks/index.md +++ b/sources/platform/integrations/programming/webhooks/index.md @@ -1,7 +1,7 @@ --- title: Webhook integration description: Learn how to integrate multiple Apify Actors or external systems with your Actor or task run. Send alerts when your Actor run succeeds or fails. -sidebar_position: 2 +sidebar_position: 0 sidebar_label: Webhook integration slug: /integrations/webhooks --- @@ -20,6 +20,6 @@ To define a webhook, select a system **event** that triggers the webhook. Then, ::: -* [**Events**](/platform/integrations/webhooks/events) -* [**Actions**](/platform/integrations/webhooks/actions) -* [**Ad-hoc webhooks**](/platform/integrations/webhooks/ad-hoc-webhooks) +* [**Events**](/integrations/webhooks/events) +* [**Actions**](/integrations/webhooks/actions) +* [**Ad-hoc webhooks**](/integrations/webhooks/ad-hoc-webhooks) diff --git a/sources/platform/integrations/workflows-and-notifications/_category_.json b/sources/platform/integrations/workflows-and-notifications/_category_.json new file mode 100644 index 0000000000..fbb2dc3258 --- /dev/null +++ b/sources/platform/integrations/workflows-and-notifications/_category_.json @@ -0,0 +1 @@ +{ "label": "Workflows and notifications", "position": 4, "collapsed": true, "collapsible": true } diff --git a/sources/platform/integrations/workflows-and-notifications/_category_.yml b/sources/platform/integrations/workflows-and-notifications/_category_.yml deleted file mode 100644 index 836d96ded0..0000000000 --- a/sources/platform/integrations/workflows-and-notifications/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: Workflows & notifications -position: 4 diff --git a/sources/platform/integrations/workflows-and-notifications/activepieces.md b/sources/platform/integrations/workflows-and-notifications/activepieces.md index b2bc2b1740..41bbce9c81 100644 --- a/sources/platform/integrations/workflows-and-notifications/activepieces.md +++ b/sources/platform/integrations/workflows-and-notifications/activepieces.md @@ -32,7 +32,7 @@ Before using the Apify piece in Activepieces, you need: - An [Apify account](https://console.apify.com/) - An [Activepieces account](https://www.activepieces.com/) or self-hosted instance -- An Apify [API key](/platform/integrations/api#api-token) with access to the Actors, tasks, and storages you want to use +- An Apify [API key](/integrations/api#api-token) with access to the Actors, tasks, and storages you want to use ## Connect Apify with Activepieces @@ -137,7 +137,7 @@ Both triggers create and manage Apify webhooks automatically when you enable or - **Build**, **Memory**, **Timeout** - **Wait for finish** behavior similar to **Run Actor**. -- **Get Dataset Items** retrieves items from an Apify [dataset](/platform/storage/dataset): +- **Get Dataset Items** retrieves items from an Apify [dataset](/actors/storage/dataset): - Choose a dataset from your account. - Configure `offset` and `limit` to page through items. - Returns dataset items, their count, and the dataset ID. @@ -147,7 +147,7 @@ Both triggers create and manage Apify webhooks automatically when you enable or - Lets you choose a **crawler type** (e.g., Cheerio, JSDOM, Playwright variants). - Returns the Actor run details and the scraped items (HTML and markdown). -- **Get Key-Value Store Record** retrieves a value from an Apify [key-value store](/platform/storage/key-value-store): +- **Get Key-Value Store Record** retrieves a value from an Apify [key-value store](/actors/storage/key-value-store): - Select a key-value store. - Select a record key from that store. - Returns the value as JSON, text, or a file reference, depending on its type. diff --git a/sources/platform/integrations/workflows-and-notifications/gumloop/index.md b/sources/platform/integrations/workflows-and-notifications/gumloop/index.md index 11ef2352cd..3b3f6db49b 100644 --- a/sources/platform/integrations/workflows-and-notifications/gumloop/index.md +++ b/sources/platform/integrations/workflows-and-notifications/gumloop/index.md @@ -2,7 +2,7 @@ title: Gumloop integration description: Connect Apify Actors to Gumloop to retrieve data for AI-powered workflows using native MCP nodes for Instagram, Google Maps, TikTok, and YouTube. sidebar_label: Gumloop -sidebar_position: 3 +sidebar_position: 0 slug: /integrations/gumloop --- @@ -25,10 +25,10 @@ These native nodes eliminate the complexity of managing Apify tasks while provid The following data sources are available natively in Gumloop: -- [Instagram](/platform/integrations/gumloop/instagram) -- [Google Maps](/platform/integrations/gumloop/maps) -- [TikTok](/platform/integrations/gumloop/tiktok) -- [YouTube](/platform/integrations/gumloop/youtube) +- [Instagram](/integrations/gumloop/instagram) +- [Google Maps](/integrations/gumloop/maps) +- [TikTok](/integrations/gumloop/tiktok) +- [YouTube](/integrations/gumloop/youtube) ### Gumloop credits diff --git a/sources/platform/integrations/workflows-and-notifications/gumloop/instagram.md b/sources/platform/integrations/workflows-and-notifications/gumloop/instagram.md index 4757dbf339..8a7f2902c8 100644 --- a/sources/platform/integrations/workflows-and-notifications/gumloop/instagram.md +++ b/sources/platform/integrations/workflows-and-notifications/gumloop/instagram.md @@ -74,6 +74,6 @@ You can pull the following types of data from public Instagram accounts using Gu ## Other integrations -- [TikTok](/platform/integrations/gumloop/tiktok) -- [YouTube](/platform/integrations/gumloop/youtube) -- [Google Maps](/platform/integrations/gumloop/maps) +- [TikTok](/integrations/gumloop/tiktok) +- [YouTube](/integrations/gumloop/youtube) +- [Google Maps](/integrations/gumloop/maps) diff --git a/sources/platform/integrations/workflows-and-notifications/gumloop/maps.md b/sources/platform/integrations/workflows-and-notifications/gumloop/maps.md index 63b82f426c..b3712ca24d 100644 --- a/sources/platform/integrations/workflows-and-notifications/gumloop/maps.md +++ b/sources/platform/integrations/workflows-and-notifications/gumloop/maps.md @@ -71,6 +71,6 @@ You can pull the following types of place data from Google Maps using Gumloop’ ## Other integrations -- [TikTok](/platform/integrations/gumloop/tiktok) -- [Instagram](/platform/integrations/gumloop/instagram) -- [YouTube](/platform/integrations/gumloop/youtube) +- [TikTok](/integrations/gumloop/tiktok) +- [Instagram](/integrations/gumloop/instagram) +- [YouTube](/integrations/gumloop/youtube) diff --git a/sources/platform/integrations/workflows-and-notifications/gumloop/tiktok.md b/sources/platform/integrations/workflows-and-notifications/gumloop/tiktok.md index 5145231e12..da0d845062 100644 --- a/sources/platform/integrations/workflows-and-notifications/gumloop/tiktok.md +++ b/sources/platform/integrations/workflows-and-notifications/gumloop/tiktok.md @@ -70,6 +70,6 @@ You can pull the following types of data from TikTok using Gumloop’s TikTok no ## Other integrations -- [Instagram](/platform/integrations/gumloop/instagram) -- [YouTube](/platform/integrations/gumloop/youtube) -- [Google Maps](/platform/integrations/gumloop/maps) +- [Instagram](/integrations/gumloop/instagram) +- [YouTube](/integrations/gumloop/youtube) +- [Google Maps](/integrations/gumloop/maps) diff --git a/sources/platform/integrations/workflows-and-notifications/gumloop/youtube.md b/sources/platform/integrations/workflows-and-notifications/gumloop/youtube.md index 6c03528114..2483c5fb80 100644 --- a/sources/platform/integrations/workflows-and-notifications/gumloop/youtube.md +++ b/sources/platform/integrations/workflows-and-notifications/gumloop/youtube.md @@ -71,7 +71,7 @@ You can pull the following types of data from YouTube using Gumloop’s YouTube ## Other integrations -- [TikTok](/platform/integrations/gumloop/tiktok) -- [Instagram](/platform/integrations/gumloop/instagram) -- [Google Maps](/platform/integrations/gumloop/maps) +- [TikTok](/integrations/gumloop/tiktok) +- [Instagram](/integrations/gumloop/instagram) +- [Google Maps](/integrations/gumloop/maps) diff --git a/sources/platform/integrations/workflows-and-notifications/ifttt.md b/sources/platform/integrations/workflows-and-notifications/ifttt.md index 2ba68372b0..549883ceb4 100644 --- a/sources/platform/integrations/workflows-and-notifications/ifttt.md +++ b/sources/platform/integrations/workflows-and-notifications/ifttt.md @@ -93,8 +93,8 @@ To use Apify as an action in your Applet: | --- | --- | --- | | **Wait until run finishes** | Defines how the Actor should be executed. | `yes`, `no` | | **Input overrides** | JSON input that overrides the Actor's default input. | `{"key": "value"}` | - | **Build** | Specifies the Actor build to run. Can be a build tag or build number. See [Builds](/platform/actors/running/runs-and-builds#builds) for more information. | `0.2.10`, `version-0` | - | **Memory** | Memory limit for the run in megabytes. See [Memory](/platform/actors/running/usage-and-resources#memory) for more information. | `256` | + | **Build** | Specifies the Actor build to run. Can be a build tag or build number. See [Builds](/actors/running/runs-and-builds#builds) for more information. | `0.2.10`, `version-0` | + | **Memory** | Memory limit for the run in megabytes. See [Memory](/actors/running/usage-and-resources#memory) for more information. | `256` | 1. Click **Create action** to finish setting up the action. @@ -125,9 +125,9 @@ To check if your Applet is working properly: ### Queries -- **Get Dataset Items**: Retrieves items from a [dataset](/platform/storage/dataset) +- **Get Dataset Items**: Retrieves items from a [dataset](/actors/storage/dataset) - **Scrape Single URL**: Runs a scraper for a specified website and returns its content -- **Get Key-Value Store Record**: Retrieves a value from a [key-value store](/platform/storage/key-value-store) +- **Get Key-Value Store Record**: Retrieves a value from a [key-value store](/actors/storage/key-value-store) ## Troubleshooting diff --git a/sources/platform/integrations/workflows-and-notifications/make/index.md b/sources/platform/integrations/workflows-and-notifications/make/index.md index 0f8e022221..c4fe5f0f73 100644 --- a/sources/platform/integrations/workflows-and-notifications/make/index.md +++ b/sources/platform/integrations/workflows-and-notifications/make/index.md @@ -2,7 +2,7 @@ title: Make integration description: Connect Apify Actors to Make scenarios to run Actors, monitor run statuses, and receive Actor results directly inside your automated workflows. sidebar_label: Make -sidebar_position: 2 +sidebar_position: 0 slug: /integrations/make --- @@ -143,4 +143,4 @@ You can initiate the Actor run via Apify Console, a scheduler, or from another M ### Searches -- **Get Dataset Items:** Retrieves items from a [dataset](/platform/storage/dataset). +- **Get Dataset Items:** Retrieves items from a [dataset](/actors/storage/dataset). diff --git a/sources/platform/integrations/workflows-and-notifications/n8n/index.md b/sources/platform/integrations/workflows-and-notifications/n8n/index.md index e8c762873b..60e91b5380 100644 --- a/sources/platform/integrations/workflows-and-notifications/n8n/index.md +++ b/sources/platform/integrations/workflows-and-notifications/n8n/index.md @@ -2,7 +2,7 @@ title: n8n integration description: Connect Apify with n8n to automate workflows by running Actors, extracting structured data, and reacting to Actor or task run events in real time. sidebar_label: n8n -sidebar_position: 7 +sidebar_position: 0 slug: /integrations/n8n --- @@ -117,7 +117,7 @@ Actions allow you to perform operations like running an Actor within a workflow. 1. Click **Add Node**, search for **Apify**, and select it. 1. Select any operation. In this example we will use **Run Actor**. 1. Configure it: - - **Custom input**: JSON input for the Actor run, which you can find on the Actor input page in Apify Console. See [Inputs](/platform/actors/running/input-and-output#input) for more information. If empty, the run uses the input specified in the default run configuration + - **Custom input**: JSON input for the Actor run, which you can find on the Actor input page in Apify Console. See [Inputs](/actors/running/input-and-output#input) for more information. If empty, the run uses the input specified in the default run configuration - **Timeout**: Timeout for the Actor run in seconds. Zero value means there is no timeout - **Memory**: Amount of memory allocated for the Actor run, in megabytes - **Build Tag**: Specifies the Actor build tag to run. By default, the run uses the build specified in the default run configuration for the Actor (typically `latest`) @@ -185,11 +185,11 @@ Pull data from Apify storage. #### Datasets -- **Get Items**: Retrieves items from a [dataset](/platform/storage/dataset) +- **Get Items**: Retrieves items from a [dataset](/actors/storage/dataset) #### Key-Value Stores -- **Get Record**: Retrieves a value from a [key-value store](/platform/storage/key-value-store) +- **Get Record**: Retrieves a value from a [key-value store](/actors/storage/key-value-store) ### Triggers diff --git a/sources/platform/integrations/workflows-and-notifications/pipedream.md b/sources/platform/integrations/workflows-and-notifications/pipedream.md index 4108c2b2bb..41f3931223 100644 --- a/sources/platform/integrations/workflows-and-notifications/pipedream.md +++ b/sources/platform/integrations/workflows-and-notifications/pipedream.md @@ -72,9 +72,9 @@ Before you begin, make sure you have: - **Run task** - Runs a selected Actor task and optionally waits for it to finish. - **Run task synchronously** - Runs a selected task and returns its dataset items when it finishes. - **Scrape single URL** - Runs a scraper on a specified URL and returns its content as HTML. Use this for extracting content from a single page, e.g. in LLM workflows. -- **Get dataset items** - Retrieves items from a [dataset](/platform/storage/dataset). -- **Get key-value store record** - Retrieves a record from a [key-value store](/platform/storage/key-value-store). -- **Set key-value store record** - Creates or updates a record in a [key-value store](/platform/storage/key-value-store). +- **Get dataset items** - Retrieves items from a [dataset](/actors/storage/dataset). +- **Get key-value store record** - Retrieves a record from a [key-value store](/actors/storage/key-value-store). +- **Set key-value store record** - Creates or updates a record in a [key-value store](/actors/storage/key-value-store). ## Resources diff --git a/sources/platform/integrations/workflows-and-notifications/windmill.md b/sources/platform/integrations/workflows-and-notifications/windmill.md index d70b187624..08339eded6 100644 --- a/sources/platform/integrations/workflows-and-notifications/windmill.md +++ b/sources/platform/integrations/workflows-and-notifications/windmill.md @@ -226,8 +226,8 @@ The Apify integration provides several operations you can use in your Windmill w - [Windmill Documentation](https://www.windmill.dev/docs/) - [Windmill Local Development](https://www.windmill.dev/docs/advanced/local_development) - [Apify API Documentation](https://docs.apify.com) -- [Apify Webhooks](/platform/integrations/webhooks) -- [Apify Actors & Tasks](/platform/actors) +- [Apify Webhooks](/integrations/webhooks) +- [Apify Actors & Tasks](/actors) ## Troubleshooting diff --git a/sources/platform/integrations/workflows-and-notifications/zapier.md b/sources/platform/integrations/workflows-and-notifications/zapier.md index c641ed8531..82f50588b9 100644 --- a/sources/platform/integrations/workflows-and-notifications/zapier.md +++ b/sources/platform/integrations/workflows-and-notifications/zapier.md @@ -119,13 +119,13 @@ Once you are happy with the test, you can publish the Zap. When it is turned on, ### Set Key-Value Store Record -> Sets a value to a [Key-value store](/platform/storage/key-value-store). +> Sets a value to a [Key-value store](/actors/storage/key-value-store). ## Searches ### Fetch dataset items -> Retrieves items from a [dataset](/platform/storage/dataset). +> Retrieves items from a [dataset](/actors/storage/dataset). ### Find last Actor run @@ -137,6 +137,6 @@ Once you are happy with the test, you can publish the Zap. When it is turned on, ### Get Key-Value Store Record -> Retrieves value from a [Key-value store](/platform/storage/key-value-store). +> Retrieves value from a [Key-value store](/actors/storage/key-value-store). If you have any questions or need help, feel free to reach out to us on our [developer community on Discord](https://discord.com/invite/jyEM2PRvMU). diff --git a/sources/platform/sidebars.js b/sources/platform/sidebars.js index 8494ebdd6a..6e17bc4eba 100644 --- a/sources/platform/sidebars.js +++ b/sources/platform/sidebars.js @@ -1,8 +1,6 @@ module.exports = { - docs: [ - { - type: 'autogenerated', - dirName: '.', - }, - ], + getStarted: [{ type: 'autogenerated', dirName: 'get-started' }], + actors: [{ type: 'autogenerated', dirName: 'actors' }], + integrations: [{ type: 'autogenerated', dirName: 'integrations' }], + account: [{ type: 'autogenerated', dirName: 'account' }], }; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index ae9ae5a27f..6ce3b0b474 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -89,10 +89,10 @@ export default function Home() { />
- - - - + + + +
} title="Actors" description="Develop, run, and share web scraping and automation tools in the cloud." - to="/platform/actors" + to="/actors" /> } title="Storage" description="Store files and results of your web scraping jobs, and export it to various formats." - to="/platform/storage" + to="/storage" /> } title="Proxy" description="Avoid blocking by smartly rotating datacenter and residential IP addresses." - to="/platform/proxy" + to="/proxy" /> } title="Schedules" description="Automatically start Actors and saved tasks at specific times." - to="/platform/schedules" + to="/schedules" /> } title="Integrations" description="Connect Actors with your favorite web apps and cloud services." - to="/platform/integrations" + to="/integrations" /> } title="Monitoring" description="Check the performance of your Actors, validate data quality, and receive alerts." - to="/platform/monitoring" + to="/monitoring" /> } title="Collaboration" description="Share Actors with other people, manage your organizations and permissions." - to="/platform/collaboration" + to="/collaboration" /> } title="Security" description="Learn about Apify platform security and data protection." - to="/platform/security" + to="/security" /> } title="MCP" description="Discover and use Actors with AI agents and LLMs via Apify MCP server." - to="/platform/integrations/mcp" + to="/integrations/mcp" /> diff --git a/static/img/platform/integrations/airbyte.svg b/static/img/integrations/airbyte.svg similarity index 100% rename from static/img/platform/integrations/airbyte.svg rename to static/img/integrations/airbyte.svg diff --git a/static/img/platform/integrations/airtable.svg b/static/img/integrations/airtable.svg similarity index 100% rename from static/img/platform/integrations/airtable.svg rename to static/img/integrations/airtable.svg diff --git a/static/img/platform/integrations/appmixer.svg b/static/img/integrations/appmixer.svg similarity index 100% rename from static/img/platform/integrations/appmixer.svg rename to static/img/integrations/appmixer.svg diff --git a/static/img/platform/integrations/asana.svg b/static/img/integrations/asana.svg similarity index 100% rename from static/img/platform/integrations/asana.svg rename to static/img/integrations/asana.svg diff --git a/static/img/platform/integrations/aws-bedrock.png b/static/img/integrations/aws-bedrock.png similarity index 100% rename from static/img/platform/integrations/aws-bedrock.png rename to static/img/integrations/aws-bedrock.png diff --git a/static/img/platform/integrations/crewai.png b/static/img/integrations/crewai.png similarity index 100% rename from static/img/platform/integrations/crewai.png rename to static/img/integrations/crewai.png diff --git a/static/img/platform/integrations/drive.svg b/static/img/integrations/drive.svg similarity index 100% rename from static/img/platform/integrations/drive.svg rename to static/img/integrations/drive.svg diff --git a/static/img/platform/integrations/flowise.png b/static/img/integrations/flowise.png similarity index 100% rename from static/img/platform/integrations/flowise.png rename to static/img/integrations/flowise.png diff --git a/static/img/platform/integrations/git.svg b/static/img/integrations/git.svg similarity index 100% rename from static/img/platform/integrations/git.svg rename to static/img/integrations/git.svg diff --git a/static/img/platform/integrations/github-white.svg b/static/img/integrations/github-white.svg similarity index 100% rename from static/img/platform/integrations/github-white.svg rename to static/img/integrations/github-white.svg diff --git a/static/img/platform/integrations/github.svg b/static/img/integrations/github.svg similarity index 100% rename from static/img/platform/integrations/github.svg rename to static/img/integrations/github.svg diff --git a/static/img/platform/integrations/gmail.svg b/static/img/integrations/gmail.svg similarity index 100% rename from static/img/platform/integrations/gmail.svg rename to static/img/integrations/gmail.svg diff --git a/static/img/platform/integrations/gumloop.svg b/static/img/integrations/gumloop.svg similarity index 100% rename from static/img/platform/integrations/gumloop.svg rename to static/img/integrations/gumloop.svg diff --git a/static/img/platform/integrations/haystack.png b/static/img/integrations/haystack.png similarity index 100% rename from static/img/platform/integrations/haystack.png rename to static/img/integrations/haystack.png diff --git a/static/img/platform/integrations/hevo.svg b/static/img/integrations/hevo.svg similarity index 100% rename from static/img/platform/integrations/hevo.svg rename to static/img/integrations/hevo.svg diff --git a/static/img/platform/integrations/ifttt.svg b/static/img/integrations/ifttt.svg similarity index 100% rename from static/img/platform/integrations/ifttt.svg rename to static/img/integrations/ifttt.svg diff --git a/static/img/platform/integrations/keboola.svg b/static/img/integrations/keboola.svg similarity index 100% rename from static/img/platform/integrations/keboola.svg rename to static/img/integrations/keboola.svg diff --git a/static/img/platform/integrations/kestra.svg b/static/img/integrations/kestra.svg similarity index 100% rename from static/img/platform/integrations/kestra.svg rename to static/img/integrations/kestra.svg diff --git a/static/img/platform/integrations/langchain.png b/static/img/integrations/langchain.png similarity index 100% rename from static/img/platform/integrations/langchain.png rename to static/img/integrations/langchain.png diff --git a/static/img/platform/integrations/langflow.png b/static/img/integrations/langflow.png similarity index 100% rename from static/img/platform/integrations/langflow.png rename to static/img/integrations/langflow.png diff --git a/static/img/platform/integrations/langgraph.png b/static/img/integrations/langgraph.png similarity index 100% rename from static/img/platform/integrations/langgraph.png rename to static/img/integrations/langgraph.png diff --git a/static/img/platform/integrations/lindy.png b/static/img/integrations/lindy.png similarity index 100% rename from static/img/platform/integrations/lindy.png rename to static/img/integrations/lindy.png diff --git a/static/img/platform/integrations/llamaindex.jpeg b/static/img/integrations/llamaindex.jpeg similarity index 100% rename from static/img/platform/integrations/llamaindex.jpeg rename to static/img/integrations/llamaindex.jpeg diff --git a/static/img/platform/integrations/make.svg b/static/img/integrations/make.svg similarity index 100% rename from static/img/platform/integrations/make.svg rename to static/img/integrations/make.svg diff --git a/static/img/platform/integrations/manus-white.svg b/static/img/integrations/manus-white.svg similarity index 100% rename from static/img/platform/integrations/manus-white.svg rename to static/img/integrations/manus-white.svg diff --git a/static/img/platform/integrations/manus.svg b/static/img/integrations/manus.svg similarity index 100% rename from static/img/platform/integrations/manus.svg rename to static/img/integrations/manus.svg diff --git a/static/img/platform/integrations/mastra.png b/static/img/integrations/mastra.png similarity index 100% rename from static/img/platform/integrations/mastra.png rename to static/img/integrations/mastra.png diff --git a/static/img/platform/integrations/mcp-logo-white.png b/static/img/integrations/mcp-logo-white.png similarity index 100% rename from static/img/platform/integrations/mcp-logo-white.png rename to static/img/integrations/mcp-logo-white.png diff --git a/static/img/platform/integrations/mcp-logo.png b/static/img/integrations/mcp-logo.png similarity index 100% rename from static/img/platform/integrations/mcp-logo.png rename to static/img/integrations/mcp-logo.png diff --git a/static/img/platform/integrations/milvus.svg b/static/img/integrations/milvus.svg similarity index 100% rename from static/img/platform/integrations/milvus.svg rename to static/img/integrations/milvus.svg diff --git a/static/img/platform/integrations/n8n.svg b/static/img/integrations/n8n.svg similarity index 100% rename from static/img/platform/integrations/n8n.svg rename to static/img/integrations/n8n.svg diff --git a/static/img/platform/integrations/openai-white.svg b/static/img/integrations/openai-white.svg similarity index 100% rename from static/img/platform/integrations/openai-white.svg rename to static/img/integrations/openai-white.svg diff --git a/static/img/platform/integrations/openai.svg b/static/img/integrations/openai.svg similarity index 100% rename from static/img/platform/integrations/openai.svg rename to static/img/integrations/openai.svg diff --git a/static/img/platform/integrations/pinecone.svg b/static/img/integrations/pinecone.svg similarity index 100% rename from static/img/platform/integrations/pinecone.svg rename to static/img/integrations/pinecone.svg diff --git a/static/img/platform/integrations/pipedream.png b/static/img/integrations/pipedream.png similarity index 100% rename from static/img/platform/integrations/pipedream.png rename to static/img/integrations/pipedream.png diff --git a/static/img/platform/integrations/qdrant.svg b/static/img/integrations/qdrant.svg similarity index 100% rename from static/img/platform/integrations/qdrant.svg rename to static/img/integrations/qdrant.svg diff --git a/static/img/platform/integrations/slack.svg b/static/img/integrations/slack.svg similarity index 100% rename from static/img/platform/integrations/slack.svg rename to static/img/integrations/slack.svg diff --git a/static/img/platform/integrations/telegram.svg b/static/img/integrations/telegram.svg similarity index 100% rename from static/img/platform/integrations/telegram.svg rename to static/img/integrations/telegram.svg diff --git a/static/img/platform/integrations/transposit.svg b/static/img/integrations/transposit.svg similarity index 100% rename from static/img/platform/integrations/transposit.svg rename to static/img/integrations/transposit.svg diff --git a/static/img/platform/integrations/trello.svg b/static/img/integrations/trello.svg similarity index 100% rename from static/img/platform/integrations/trello.svg rename to static/img/integrations/trello.svg diff --git a/static/img/platform/integrations/viasocket.ico b/static/img/integrations/viasocket.ico similarity index 100% rename from static/img/platform/integrations/viasocket.ico rename to static/img/integrations/viasocket.ico diff --git a/static/img/platform/integrations/webhook.svg b/static/img/integrations/webhook.svg similarity index 100% rename from static/img/platform/integrations/webhook.svg rename to static/img/integrations/webhook.svg diff --git a/static/img/platform/integrations/webhooks.svg b/static/img/integrations/webhooks.svg similarity index 100% rename from static/img/platform/integrations/webhooks.svg rename to static/img/integrations/webhooks.svg diff --git a/static/img/platform/integrations/zapier.svg b/static/img/integrations/zapier.svg similarity index 100% rename from static/img/platform/integrations/zapier.svg rename to static/img/integrations/zapier.svg