Output formats
Every output format, how to narrow columns, and how to template rows.
Every list command renders through the same formatter.
Pick a format with -o, or let ccrawl choose: a table when writing to a terminal, JSONL when piped.
Formats
ccrawl search example.com -o table # aligned columns for reading
ccrawl search example.com -o jsonl # one JSON object per line, for piping
ccrawl search example.com -o json # a single JSON array
ccrawl search example.com -o csv # spreadsheet friendly
ccrawl search example.com -o tsv # tab-separated
ccrawl search example.com -o url # just the URL column
ccrawl search example.com -o raw # the underlying bytes, unformatted
ccrawl search example.com -o parquet > out.parquet # columnar, for analytics
| Format | Best for |
|---|---|
table |
Reading on a terminal |
jsonl |
Piping into another tool, one object at a time |
json |
Loading a whole result as an array |
csv / tsv |
Spreadsheets and quick column math |
url |
Feeding URLs into other commands |
raw |
The unformatted bytes (response bodies, file contents) |
parquet |
Columnar output for analytics, written to a file or pipe |
parquet writes a zstd-compressed Parquet stream where every projected column is a UTF-8 string.
It works with any list command, so you can turn a search or a host listing straight into a Parquet file for DuckDB, Spark, or pandas:
ccrawl search '*.gov/*' --status 200 -o parquet > gov.parquet
ccrawl host top -n 100000 -o parquet > top_hosts.parquet
Narrowing columns
Keep only the fields you want:
ccrawl search example.com --fields url,status,length
--no-header drops the header row in table and csv output, which is handy when a downstream tool expects bare rows.
Templating rows
For full control over each line, apply a Go text/template. Fields are the JSON keys, capitalised:
ccrawl search example.com --template '{{.URL}} {{.Status}}'
ccrawl search example.com --template '{{.URL}} {{.Length}} bytes'
Why auto-detection helps
Because the default adapts to the destination, the same command reads well by hand and parses cleanly in a pipe:
ccrawl search example.com # a table, because this is a terminal
ccrawl search example.com | wc -l # JSONL, because this is a pipe
You only reach for -o when you want something other than that default.