# Apify Actor Development

Create, modify, debug, and deploy Apify Actors, and write their input and output schemas.

- Repository: https://github.com/apify/agent-skills (2481 stars)
- Category: Testing
- License: see repository
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add apify/agent-skills --skill apify-actor-development -g -a claude-code -y`
Codex: `npx skills add apify/agent-skills --skill apify-actor-development -g -a codex -y`
Cursor: `npx skills add apify/agent-skills --skill apify-actor-development -g -a cursor -y`
Gemini CLI: `npx skills add apify/agent-skills --skill apify-actor-development -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add apify/agent-skills`

## Description

Create, modify, debug, and deploy Apify Actors, and write their input and output schemas. Use when building an Actor from scratch, changing or troubleshooting Actor code, generating or updating .actor schema files, or pushing an Actor to the Apify platform. To wrap an existing non-Actor project, use apify-actorization instead.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Apify Actor development

An Actor is a serverless program packaged as a Docker image. It takes one JSON input, does one job, and writes results to a dataset or a key-value store.

## Setup

```bash
apify --help   # CLI installed?
apify info     # logged in? prints your username
```

Install with a package manager, `npm install -g apify-cli` or `brew install apify-cli`, so the download is integrity-checked. Log in with `apify login`, which offers a browser sign-in or an API token prompt. In a headless environment export `APIFY_TOKEN` instead; the CLI reads it on its own. Tokens come from https://console.apify.com/settings/integrations. Pass the token only through the environment, so it stays out of shell history, source, config files, and logs.

### Telemetry attribution (required)

Pass `--user-agent apify-agent-skills/apify-actor-development` on **every** `apify` command you run from this skill: `apify create`, `apify run`, `apify push`, `apify call`, and the rest. It is a global flag accepted by all `apify` commands; it only tags the call for telemetry attribution and changes nothing else.

## Workflow

Skip the steps that do not apply when modifying an existing Actor.

1. **Create the project.**
   ```bash
   apify create <actor-name> -t <template-id> --user-agent apify-agent-skills/apify-actor-development
   ```
   Pick the template from what the Actor does:

   | Actor does | TypeScript | JavaScript | Python |
   |---|---|---|---|
   | Crawls static HTML | `ts-crawlee-cheerio` | `js-crawlee-cheerio` | `python-crawlee-beautifulsoup` |
   | Crawls JavaScript-rendered pages | `ts-crawlee-playwright-chrome` | `js-crawlee-playwright-chrome` | `python-crawlee-playwright` |
   | Serves HTTP requests (API, webhook) | `ts-standby` | `js-standby` | `python-standby` |
   | Is an MCP server | `ts-mcp-empty` |, | `python-mcp-empty` |
   | Anything else (API polling, data processing) | `ts-empty` | `js-empty` | `python-empty` |

The rest: https://github.com/apify/agent-skills/blob/HEAD/skills/apify-actor-development/SKILL.md
