Mapped fields cover the vast majority of use cases. When you need immediate access to Derby or SQLite columns that mappings do not yet cover, three escape hatches are available.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.
Raw table iteration
crawl.raw(table) iterates every row from a backend table as plain dicts, using the native column names from the database:
Raw column names vary by backend and Screaming Frog version. Use
crawl.sql("SELECT * FROM APP.URLS FETCH FIRST 1 ROWS ONLY", []) to inspect available columns before building a query.SQL passthrough
crawl.sql(query, params) passes a raw SQL string directly to the backend engine:
? placeholders and pass parameters as a list to avoid SQL injection. Derby uses FETCH FIRST n ROWS ONLY syntax for limits:
Query builder
crawl.query(schema, table) returns a QueryView — a chainable query builder that constructs SQL without requiring you to write full query strings.
Basic example
Available QueryView methods
.select(*columns)
Choose which columns to return. Defaults to
*..where(clause, *params)
Add a
WHERE condition. Use ? for parameterised values. Multiple .where() calls are combined with AND..group_by(*columns)
Add a
GROUP BY clause..having(clause, *params)
Add a
HAVING condition for aggregated results. Use ? for parameterised values..order_by(*clauses)
Add an
ORDER BY clause. Accepts strings like "RESPONSE_CODE DESC"..limit(n)
Limit the number of rows returned.
Collecting results
Inspecting the generated SQL
Use.to_sql() to see the SQL string and parameter list before executing:
Grouping and aggregation example
Backend compatibility
| Method | Derby | SQLite | CSV / CLI export |
|---|---|---|---|
crawl.raw() | Yes | Yes | No |
crawl.sql() | Yes | Yes | No |
crawl.query() | Yes | Yes | No |