Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions sources/platform/actors/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ category: platform
slug: /actors
---

**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.**
**Learn how to run, develop, and publish Apify Actors — serverless cloud programs for web data extraction and workflow automation.**

import Card from "@site/src/components/Card";
import CardGrid from "@site/src/components/CardGrid";
Expand All @@ -33,9 +33,7 @@ import CardGrid from "@site/src/components/CardGrid";

## Actors overview

Actors are serverless cloud programs that can perform anything from a simple action, like filling out a web form, to a complex operation, like crawling an entire website or removing duplicates from a large dataset. Because Actors can persist their state and be restarted, their runs can be as short or as long as necessary, from seconds to hours, or even indefinitely.

Basically, Actors are programs packaged as Docker images, which accept a well-defined JSON input, perform an action, and optionally produce a well-defined JSON output.
Actors are serverless programs to automate workflows and extract data. Each Actor takes a structured JSON input, performs a task (like web scraping, browser automation, or data processing), and can optionally produce a structured output. Actors are easy to run manually, via API, or on a schedule, and you can combine them into larger automations.

:::info Additional context

Expand Down
8 changes: 3 additions & 5 deletions sources/platform/index.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Apify platform
title: Apify Platform Documentation
description: Apify is your one-stop shop for web scraping, data extraction, and RPA. Automate anything you can do manually in a browser.
slug: /
hide_table_of_contents: true
Expand All @@ -11,13 +11,11 @@ import CardGrid from "@site/src/components/CardGrid";
import homepageContent from "./homepage_content.json";


**Apify** is a cloud platform and marketplace for web scraping and automation tools.
>
> **Actors** are serverless cloud programs running on the Apify platform. They can perform simple actions like filling out web forms or sending emails, or complex operations like crawling millions of web pages or transforming large datasets. Actors can be started manually, via API, or on a schedule, and integrate easily with other applications.
**Apify** is a cloud platform and marketplace for web data extraction and automation tools called **Actors**.

## Getting started

**Learn how to run any Actor in Apify Store or create your own. A step-by-step guides through your first steps on the Apify platform.**
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.

<CardGrid>
<Card
Expand Down
2 changes: 1 addition & 1 deletion src/components/SdkSection/SdkSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ export default function SdkSection({
</GitHubButton>
<div className="SdkSectionActionButtons">
<StyledButton hideExternalIcon color='success' to={gettingStartedUrl}>Get started</StyledButton>
<ActionLink hideExternalIcon to={referenceUrl} >{`${language} SDK Reference`}</ActionLink>
<ActionLink hideExternalIcon to={referenceUrl} >View reference</ActionLink>
</div>
</div>
<div className="SdkSectionCodeExamples">
Expand Down
37 changes: 17 additions & 20 deletions src/pages/api/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,6 @@ const RelatedArticlesWrapper = styled.div`
a {
width: 100%;

.ImageWrapper {
overflow: hidden;
}

img {
transition: transform 120ms;
}
Expand Down Expand Up @@ -120,19 +116,18 @@ export default function Api() {
<Layout>
<UiLibraryWrapper>
<Hero
heading="Apify API"
description={<>Apify API provides programmatic access to the <Link to="/">Apify platform</Link></>}
heading="Apify API documentation"
description={<>Learn how to use the <Link to="/platform">Apify platform</Link> programmatically.</>}
Copy link
Contributor

Choose a reason for hiding this comment

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

I wouldn't use Learn here since this is just the link to the full API ref, we don't teach there anything, and there is no narrative like for example in Academy's courses by @honzajavorek

Copy link
Member Author

Choose a reason for hiding this comment

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

This one is the top line, imo it works there. Or what other word to put there?

Screenshot 2026-01-20 at 14 31 59

Copy link
Contributor

Choose a reason for hiding this comment

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

The current "Learn how to use" copy suggests guides or tutorials, but this page is reference documentation (REST API + client libraries).

I'd swap it out for something more developer-focused:

Suggested change
description={<>Learn how to use the <Link to="/platform">Apify platform</Link> programmatically.</>}
description={<>Integrate the <Link to="/platform">Apify platform</Link> into your applications using the API or client libraries.</>}

It's developer-focused, outcome-oriented, and accurately cover both the REST API and client libraries covered on this page.

Other options if you prefer:

More general capability focus:

Suggested change
description={<>Learn how to use the <Link to="/platform">Apify platform</Link> programmatically.</>}
description={<>Access the <Link to="/platform">Apify platform</Link> programmatically using the API or client libraries.</>}

Most concise (closest to original):

Suggested change
description={<>Learn how to use the <Link to="/platform">Apify platform</Link> programmatically.</>}
description={<>Access the <Link to="/platform">Apify platform</Link> programmatically.</>}

I'd go with the "Integrate" version, but all three fix the main issue. Thoughts?

Copy link
Member Author

Choose a reason for hiding this comment

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

But that sounds like some CTA in Console. Whenever we link to docs from Console or other places, we often call the link "Learn more". IMO "learn" is perfectly okay

Copy link
Member Author

Choose a reason for hiding this comment

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

Copy link
Contributor

@TC-MO TC-MO Jan 20, 2026

Choose a reason for hiding this comment

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

Yeah I understand the concern, and I appreciate you bringing those examples.

The key difference: those Stripe and Vercel examples link to content that has substantial how-to guides alongside the API reference.

This API landing page links to TWO different content types:

  1. Client libraries - some guided content, but primarily comprehensive API reference (classes, methods, interfaces)
  2. REST API - pure auto-generated OpenAPI spec (endpoint lists, parameters, responses)

Even our own client library docs (docs.apify.com/api/client/js and /python) don't use "Learn" in their descriptions - they describe what the library is rather than what you'll learn. The main selling point across all these sections is the referential documentation, with some guided content as supporting material.

Using "Learn" sets an expectation for tutorial-style instruction, but users primarily come here to look up API endpoints, method signatures, and parameters. If you are not keen on CTA-coded Integrate perhaps:

Suggested change
description={<>Learn how to use the <Link to="/platform">Apify platform</Link> programmatically.</>}
description={<>Access the <Link to="/platform">Apify platform</Link> programmatically using the API or client libraries.</>}

would more accurately represent the reference-heavy nature of the content.

Happy to stick with Learn if you prefer, but wanted to flag that the current structure is more reference-focused than those comparison examples.

/>
<SectionWrapper
className={styles.LargerContent}
heading="API reference"
heading="REST API"
description={<div className="MainSectionContent">
<p>The Apify API allows developers to interact programmatically with apps using HTTP requests.
The Apify API is built around <Link to="https://en.wikipedia.org/wiki/REST">REST</Link>.</p>
<p>The API has predictable resource-oriented URLs, returns JSON-encoded responses,
and uses standard HTTP response codes, authentication, and verbs.</p>
<p>The Apify API is built around HTTP REST,
uses predictable resource-oriented URLs, returns JSON-encoded responses,
and uses standard HTTP response codes, authentication, and verbs.</p>
<div>
<Button to='/api/v2'>Check API reference</Button>
<Button to='/api/v2'>View API reference</Button>
</div>
</div>}
>
Expand All @@ -151,8 +146,8 @@ curl -X POST -d @- \\
<Section
headingClassName={styles.ApiSectionHeading}
className={styles.LargerContent}
heading="API client"
description="The official library to interact with Apify API."
heading="API clients"
description="The client libraries are a more convenient way to interact with the Apify platform than the HTTP REST API."
>
<Tabs items={[
{
Expand All @@ -162,18 +157,18 @@ curl -X POST -d @- \\
width={16}
sources={{ dark: useBaseUrl('/img/javascript-40x40.svg'), light: useBaseUrl('/img/javascript-40x40.svg') }}
/>
JavaScript Client
JavaScript
</TabTitleWrapper>,
content: (
<SectionWrapper
heading="JavaScript API client"
headingAs="h3"
description={<div className="Description">
The official library to interact with Apify API from a web browser, Node.js, JavaScript, or Typescript applications.
For web browser, JavaScript/TypeScript applications, Node.js, Deno, or Bun.
<GitButton href="https://github.com/apify/apify-client-js" data-size="large" data-show-count="true">Star</GitButton>
<div className="DescriptionLinks">
<Button color="success" hideExternalIcon to='https://docs.apify.com/api/client/js/docs'>Get started</Button>
<ActionLink hideExternalIcon to='https://docs.apify.com/api/client/js/reference'>JavaScript client reference</ActionLink>
<ActionLink hideExternalIcon to='https://docs.apify.com/api/client/js/reference'>View reference</ActionLink>
</div>
</div>}
>
Expand Down Expand Up @@ -208,17 +203,19 @@ const { items } = await client.dataset(defaultDatasetId).listItems();`}
width={16}
sources={{ dark: useBaseUrl('/img/python-40x40.svg'), light: useBaseUrl('/img/python-40x40.svg') }}
/>
Python Client
Python
</TabTitleWrapper>,
content: (
<SectionWrapper
heading="Python API client"
description={<div className="Description">
The official library to interact with Apify API from a Python applications.
For Python applications or notebooks.
{/* This is a hotfix for invalid width, sorry neither me nor Claude can do better :) */}
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<GitButton href="https://github.com/apify/apify-client-python" data-size="large" data-show-count="true">Star</GitButton>
<div className="DescriptionLinks">
<Button color="success" hideExternalIcon to='https://docs.apify.com/api/client/python/docs'>Get started</Button>
<ActionLink hideExternalIcon to='https://docs.apify.com/api/client/python/reference'>Python client reference</ActionLink>
<ActionLink hideExternalIcon to='https://docs.apify.com/api/client/python/reference'>View reference</ActionLink>
</div>
</div>}
>
Expand Down
15 changes: 8 additions & 7 deletions src/pages/sdk/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,17 +56,18 @@ export default function Home() {
heading="Apify SDK"
description={
<>
The Apify SDK is a toolkit for building Actors—serverless microservices running (not only) on the Apify platform.
The Apify SDK is a toolkit for building Actors—serverless microservices running on the Apify platform.
Apify comes with first-class support for JavaScript/TypeScript and Python,
but you can run any containerized code on the Apify platform.
but you can run any containerized code as Actors.
</>
}
/>
<Section>
<StyledContent>
<SdkSection
title="SDK for JavaScript"
description="Toolkit for building Actors—serverless microservices running (not only) on the Apify platform."
title="Apify SDK for JavaScript"
description="The official library for creating Apify Actors in Python, with full lifecycle management,
local storage, and event handling."
installCodeSnippet="npx apify-cli create my-crawler"
exampleCodeSnippet={javascriptExample}
language="JavaScript"
Expand All @@ -75,9 +76,9 @@ export default function Home() {
referenceUrl="https://docs.apify.com/sdk/js/reference"
/>
<SdkSection
title="SDK for Python"
description="The Apify SDK for Python is the official library for creating Apify Actors in Python.
It provides useful features like actor lifecycle management, local storage emulation, and actor event handling."
title="Apify SDK for Python"
description="The official library for creating Apify Actors in Python, with full lifecycle management,
local storage, and event handling."
installCodeSnippet="apify create my-python-actor"
exampleCodeSnippet={pythonExample}
language="Python"
Expand Down
Loading