Chain helpers let you find multi-hop redirect and canonical paths across your crawl. They expose ergonomic filtering by hop count and loop flag on top of the same underlying tab data that Screaming Frog uses.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Amaculus/screaming-frog-api/llms.txt
Use this file to discover all available pages before exploring further.
Chain helpers fall back to raw DuckDB traversal on lean caches, so they work without requiring the redirect/canonical chain tabs to be pre-materialized.
Methods
redirect_chains
Iterates all redirect chains in the crawl.
canonical_chains
Iterates all canonical chains in the crawl.
redirect_and_canonical_chains
Iterates chains that contain a mix of redirects and canonicals.
redirect_chain_report
A collected helper that runs redirect_chains and returns the full result as a list[dict] instead of a lazy iterator.
Parameters
min_hops
min_hops
Minimum number of hops (redirects or canonicals) required for a chain to be included.
None means no lower bound.For example, min_hops=3 returns only chains with 3 or more hops.max_hops
max_hops
Maximum number of hops allowed.
None means no upper bound.For example, max_hops=5 excludes any chains longer than 5 hops.loop
loop
Filter by whether the chain is a loop:
True— return only looping chainsFalse— return only non-looping chainsNone(default) — return all chains regardless of loop status
Row fields
Each yieldeddict mirrors the columns in the corresponding Screaming Frog tab:
| Method | Key hop-count field | Notes |
|---|---|---|
redirect_chains | Number of Redirects | |
canonical_chains | Number of Canonicals | |
redirect_and_canonical_chains | Number of Redirects/Canonicals |
Address (the chain start URL) and additional chain path fields.
Examples
Redirect chains with 3+ hops and no loops
From the README:Canonical chains
Mixed redirect and canonical chains
Collected report
When you need alist rather than an iterator — for example to pass to pandas:
Loop detection
Raw tab access
The chain helpers are thin wrappers over the same underlying tab data. You can access the raw tabs directly viacrawl.tab(...) if you need unfiltered access or want to apply your own filter logic: