Crawlerflow
Crawlerflow is a declarative, YAML-based workflow engine for browser automation and web scraping. Workflows describe what should happen; adapters and steps decide how it happens.
Installation
pip install crawlerflow
Include browser support to run Pydoll-backed workflows:
pip install "crawlerflow[browser]"
Current foundation
- Versioned YAML workflow loading and validation
- Browser-independent adapter contract and a lazy-starting Pydoll implementation
- Extensible step registry
- Isolated plugin API with typed YAML settings, lifecycle hooks, steps, filters, and subscribers
- Async workflow executor and event bus
- Variable interpolation and a built-in expression engine
- Per-run
todayandnowdate variables - Nested
foreach,foreach_date,foreach_select, and declarativeifcontrol flow - Reusable parameterized workflow macros
- Per-step retry and continue/fail error policies
- JSON Lines workflow, step, retry, and request event logging
- Built-in navigation, interaction, cookies, downloads, screenshots, and selective HTML output
run,validate,list-steps,list-plugins, anddoctorCLI commands
Development
python -m pip install -e ".[dev]"
pytest
crawlerflow validate examples/basic.yaml
crawlerflow run examples/basic.yaml
Run multiple workflows sequentially by supplying more paths. Execution stops at the first failed workflow:
crawlerflow run examples/first-site.yaml examples/second-site.yaml
A directory argument discovers its directly contained .yaml and .yml files and runs them in
alphabetical order:
crawlerflow run examples
Use asynchronous mode to run every supplied workflow in parallel. All workflows are allowed to
finish; the command exits with code 1 if any workflow fails:
crawlerflow run --mode async examples/first-site.yaml examples/second-site.yaml
Directory discovery can also be combined with parallel execution:
crawlerflow run --mode async examples
Add --progress to display a live progress bar based on the total workflow count. The bar advances
as each workflow succeeds or fails in both sequential and asynchronous modes:
crawlerflow run --mode async --progress examples
Use --concurrency (or -c) to limit how many workflows run at the same time in asynchronous
mode. This avoids starting every HTTP client or browser session simultaneously:
crawlerflow run --mode async --concurrency 8 --progress examples
Omitting the option preserves unlimited parallel execution. --concurrency accepts positive
integers and can only be used with --mode async.
Install browser support and select Pydoll in a workflow:
python -m pip install -e ".[browser,dev]"
browser:
engine: pydoll
headless: true
Browser-free workflows omit the browser section. Applications can also inject another
BrowserAdapter into WorkflowRunner. See docs/http-requests.md for direct HTTP requests and
shortened map URL coordinate resolution.
External extensions can register entry points under crawlerflow.plugins; workflows activate only
the plugins they list. See docs/plugins.md and the installable examples/plugins/example package
for the plugin contract, discovery command, and packaging example.
Metadata
Release files for crawlerflow 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| crawlerflow-0.6.0.tar.gz | 92.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| crawlerflow-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 150.9 kB
Release files / crawlerflow-0.6.0.tar.gz
| Download URL | crawlerflow-0.6.0.tar.gz |
|---|---|
| Size | 92.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8eb9881cecb5a197eda5d673caadcdaa1d73e08bb778ace234193c7020a1ad1a
|
|
BLAKE2b-256 checksum How to use checksums |
303db11e6b3030d3f8387e1e1e2085ecaa6ee7ce865d2ed9c6a00e7cec265673
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency logRelease files / crawlerflow-0.6.0-py3-none-any.whl
| Download URL | crawlerflow-0.6.0-py3-none-any.whl |
|---|---|
| Size | 58.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
938021b946d94cd1b27557650943ae552c7e669b6301bf7655c7362df48815d3
|
|
BLAKE2b-256 checksum How to use checksums |
baffcbdc08dfb36dc2385eb04895d291193439aa18e495b74a57e00fd8d502d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.
Transparency log