This repository stores boilerplate templates and code examples for Apify Actor. The purpose of these templates is to help developers get started with Actor development on the Apify platform.
You can start using the Actor templates right away with the Apify CLI:
npx apify-cli create my-crawleror
npm -g install apify-cli
apify create my-actorAfter running the command you will be prompted to select one of the templates from the list displayed in your terminal. The available templates are:
Basic templates to start developing Actors on the Apify platform using Node.js (JavaScript/Typescript), or Python. Just install the CLI and watch your Actor run.
You can find more code examples in the Apify SDK documentation.
If you're already familiar with Actors, you can use the following templates to bootstrap new projects using an empty project templates or Crawlee templates:
Start a new web scraping project quickly and easily in JavaScript/TypeScript (Node.js) or Python with our empty project template. It provides a basic structure for the Actor with Apify JavaScript SDK or Apify Python SDK and allows you to easily add your own functionality.
- CheerioCrawler (TypeScript version) - Standard and up to date template for developing with Crawlee's CheerioCrawler.
- PlaywrightCrawler (TypeScript version) - Standard and up to date template for developing with Crawlee's PlaywrightCrawler.
- PuppeteerCrawler (TypeScript version) - Standard and up to date template for developing with Crawlee's PuppeteerCrawler.
To run the template:
cd my-actor
apify runThe template manifest can be fetched programmatically. Apify CLI uses this to always fetch the most up to date templates.
npm i @apify/actor-templatesimport { fetchManifest } from '@apify/actor-templates';
const manifest = await fetchManifest();All templates are stores in ./templates directory.
For each template needs to create an archive of whole source code into the ./dist/templates directory.
The archive is used to create a boilerplate template in apify CLI or other places in the Apify system.
If you want to change a template, you will have to update the template files and the manifest.json file before pushing the changes to the master branch. After pushing to master, the archive will be automatically built using Github actions.
The AGENTS.md file is provided in templates. Each file has a prefix in the name, which matches the prefix of the template in the templates directory.
For example, for all js templates (so js-start, js-empty, js-crawlee-cheerio, etc.), the AGENTS.md file is located in the ./agent-bases/js.AGENTS.md file.
To update the AGENTS.md file, you will have to update the file in the ./agent-bases directory. Once merged, the GitHub workflow will automatically update the
templates with the new content.
Templates are propagated to Apify CLI templates. You can then find your newly added template when using the apify create command.
The propagation happens after committing a new version of the template into the master branch. After tests succeeded the Github action
builds archives of each template and pushes these archives into the repository. The CLI command then uses those archives
to bootstrap your project folder. We did it this way because we can update template structure/code without publishing
any package to npm. It makes templates changes agile.
Templates on the Apify Web are statically generated with each apify-web deployment.
The web is typically deployed multiple times per week.
Icons are derived from the manifest.json file by specifying them in the technologies array.
If there is a new icon, it has to be added to the apify-web/public/img/template-icons directory first.
If you have any ideas for improvements, either submit an issue or create a pull request. For contribution guidelines and the code of conduct, see CONTRIBUTING.md.
