CLI — Options (complete reference)

This page documents every command-line flag supported by wayparam, including: - purpose - default - interactions and caveats - practical examples

Tip: Keep stdout machine-readable (URLs/JSONL) and rely on stderr for diagnostics.


Input

-d, --domain DOMAIN

Query a single domain/host (e.g., example.com).

Default: none (required unless --list is used)

Example:

wayparam -d example.com

-l, --list FILE

Read domains from a file (one per line). Use - to read from stdin.

Default: none (required unless --domain is used)

Supported input normalization: - strips comments/empty lines - accepts https://example.com/path and extracts host - lowercases the host

Example:

wayparam -l domains.txt

Example (stdin):

cat domains.txt | wayparam -l -

Archive sources

--source NAME[,NAME...]

Choose one or more archive providers in priority order.

Default: wayback

Supported values: - wayback - commoncrawl - wayback,commoncrawl (or the reverse order)

Normalized URLs are deduplicated across providers. With JSONL output, the source field names the provider that discovered a normalized URL first.

wayparam -d example.com --source commoncrawl
wayparam -d example.com --source wayback,commoncrawl --format jsonl

--cc-index ID

Choose a Common Crawl CDXJ collection. Repeat the option or use a comma-separated value to query several crawls.

Default: latest (resolved through Common Crawl collinfo.json)

wayparam -d example.com --source commoncrawl --cc-index CC-MAIN-2026-39
wayparam -d example.com --source commoncrawl \
  --cc-index CC-MAIN-2026-39 --cc-index CC-MAIN-2026-34

--cc-page-size N

Compressed Common Crawl ZipNum index blocks per result page. This is not a row count.

Default: 5

--cc-rps FLOAT

Common Crawl index requests per second. Common Crawl requests are also serialized within a run.

Default: 1

Setting 0 disables the delay, but wayparam warns because Common Crawl asks clients to sleep between API calls.

--cc-filter FILTER

Provider-native Common Crawl CDXJ filter. Repeatable.

wayparam -d example.com --source commoncrawl --cc-filter status:200

See Archive sources for provider-specific behavior.


Output

-o, --outdir DIR

Directory where per-domain files are written.

Default: results

Example:

wayparam -d example.com -o out

--stdout

Stream results to stdout (machine-readable). Diagnostics remain on stderr.

Default: off

Use this for pipelines:

wayparam -d example.com --stdout --no-files | sort -u

--format {txt|jsonl}

Choose output format for stdout and per-domain files.

Default: txt

  • txt: one URL per line
  • jsonl: one JSON object per line (JSON Lines)

Example (JSONL to jq):

wayparam -d example.com --stdout --no-files --format jsonl | jq -r '.url'

--no-files

Disable per-domain files. Requires --stdout.

Default: off

Example:

wayparam -d example.com --stdout --no-files

--stats

Print per-domain counts (fetched, kept) to stderr at the end.

Default: off

Example:

wayparam -l domains.txt --stats

--quiet

Only print errors to stderr (useful for scripting).

Default: off

Example:

wayparam -l domains.txt --quiet --stats

Historical analysis views

The following flags are mutually exclusive:

  • --history: one record per normalized URL, with first/last seen, capture count, status-code counts and MIME-type counts
  • --params: one record per query-parameter name, with endpoint count, capture count and first/last seen
  • --summary: one aggregate record per domain
  • --timeline: one record per year/month bucket with accepted captures, observed/new normalized URLs and observed/new parameter names
  • --changes BASELINE COMPARISON: compare two YYYY or YYYYMM buckets and classify normalized URLs/parameters as added, removed or persisted
  • --topology: group normalized archive evidence by host/path and parameter-set variants
  • --cooccurrence: report unordered parameter pairs observed together with URL/route/capture counts and first/last seen
  • --report: emit a versioned JSONL evidence bundle combining the compatible historical views from one Wayback metadata pass

Historical modes currently require --source wayback. They request timestamp,statuscode,mimetype,original from Wayback CDX and automatically disable collapse=urlkey, because collapsed results cannot provide correct capture counts or first/last-seen dates.

wayparam -d example.com --history --stdout --no-files --format jsonl
wayparam -d example.com --params
wayparam -d example.com --summary --format jsonl
wayparam -d example.com --timeline --timeline-granularity month --format jsonl
wayparam -d example.com --changes 2020 2024 --format jsonl
wayparam -d example.com --topology --format jsonl
wayparam -d example.com --cooccurrence --format jsonl
wayparam -d example.com --report --format jsonl

--report

Emit the stable machine-readable evidence bundle. This mode requires --format jsonl and currently requires --source wayback.

The first JSONL record is a report_manifest with schema wayparam-evidence-report/v1, generator version, domain, archive source, included sections, completeness state and bounded-run context. Following lines are report_record wrappers containing the unchanged records from summary, history, params, timeline, topology and co-occurrence.

Use --report-changes BASELINE COMPARISON to include the existing period-change view in the same bundle without a second archive request.

wayparam -d example.com --report --format jsonl --stdout --no-files
wayparam -d example.com --report --report-changes 2020 2024 --format jsonl

--report-changes BASELINE COMPARISON

Include temporal change evidence in --report. Both periods must be YYYY or both YYYYMM, and the baseline must precede the comparison period. This option is invalid without --report.

--topology

Group accepted historical evidence by host/path. The record includes observed schemes, total captures, normalized URL variants, first/last seen, the union of parameter names and deterministic parameter-set variants.

The view describes archive-index evidence only and does not infer which parameters are required or which routes are currently deployed.

--cooccurrence

Report unordered pairs of parameter names observed together on normalized archived endpoints. Each record contains normalized URL count, distinct route count, accepted capture count and first/last seen timestamps.

This view is descriptive only: it does not infer parameter dependency, risk or exploitability.

--changes BASELINE COMPARISON

Compare two historical archive buckets. Both periods must be YYYY or both must be YYYYMM; the baseline must precede the comparison period.

The output begins with a change summary and then emits deterministic detail records for URL shapes and parameter names. removed means absent from the comparison archive bucket, not proven absent from the live target.

--timeline-granularity {year|month}

Choose the bucket size used by --timeline and the timeline section of --report.

Default: year

This option does not change archive retrieval; it only changes how accepted capture timestamps are aggregated.

Text output is tab-separated. JSONL output uses structured records. File output uses mode-specific names such as example.com.history.jsonl so normal URL results are never overwritten.


Shared archive query options

--include-subdomains

Include subdomains by using CDX matchType=domain instead of host.

Default: off (host only)

Example:

wayparam -d example.com --include-subdomains

--from TIMESTAMP

Only include captures from this timestamp/year.

Accepted forms depend on CDX behavior, but commonly: - 2019 - 20190101000000

Default: none

Example:

wayparam -d example.com --from 2019

--to TIMESTAMP

Only include captures up to this timestamp/year.

Default: none

Example:

wayparam -d example.com --to 2021

--no-collapse

Disable collapse=urlkey.

Default: collapse enabled (dedup at archive-index side)

Disabling collapse returns more duplicates and increases transfer size.


Wayback-specific CDX options

--pagination {auto,blocks,resume}

How to walk a result that does not fit in one response. The CDX API offers two mechanisms and they are not equivalent:

mode requests scale with lossless with collapse?
resume (showResumeKey) the size of the filtered result no — drops one row per page boundary
blocks (showNumPages/page) the size of the domain's index yes

Default: auto — send one resume-style request; if the whole result came back in it there is no page boundary, so nothing can be lost and the run stops there for the price of a single request. Only when that first response carries a resumeKey does wayparam restart through the block API, which costs one extra request but is exact.

Measured against the live API on the same query, paged 18 ways:

reference (single response) : 4684 URLs
--pagination resume         : 4669 URLs   (15 lost)
--pagination blocks         : 4684 URLs   (0 lost)

Use blocks to force the exact walk, or resume if you knowingly want the cheaper-but-lossy one; resume warns on stderr the first time it paginates with collapse on. If the API reports that block pagination is unavailable for a query (it answers -), wayparam says so and falls back to resume.

--block-size N

CDX index blocks per request in block mode.

Default: 100

Larger values mean fewer requests but slower, heavier responses, and the first results only appear once one arrives — a single block page can be tens of megabytes. Smaller values stream sooner at the cost of more requests.

--limit N, --page-size N

These are aliases. They control how many CDX rows to ask for per request in resume mode. This is a page size, not a cap on results; use --max-results to bound a run. It also decides how much auto will pull in its probe before concluding the result spans pages.

Default: 50000

--max-results N

Stop the whole run once this many URLs have been emitted. The budget is global, shared by every domain in the run, so with several domains whichever gets there first uses it up. In --history, --params and --summary modes, the same option limits accepted capture rows before aggregation rather than the number of final aggregate records.

Default: 0 (no cap)

wayparam -d example.com --stdout --no-files --max-results 500

A run stopped by the budget is a success (exit 0), and --stats marks the affected domains (incomplete).

--filter FILTER

Pass a Wayback CDX filter (repeatable). This is forwarded to the Wayback API as-is.

Default: none

Common patterns include filtering by status code (depending on CDX capabilities):

wayparam -d example.com --filter statuscode:200

You can repeat:

wayparam -d example.com --filter statuscode:200 --filter mimetype:text/html

Normalization options

--placeholder STR

Replace parameter values with this placeholder.

Default: FUZZ

Example:

wayparam -d example.com --placeholder X

--keep-values

Keep original parameter values.

Default: off

⚠️ Not recommended if you share results publicly.

Example:

wayparam -d example.com --keep-values

--all-urls

Include URLs without query parameters.

Default: off (only parameterized URLs)

Example:

wayparam -d example.com --all-urls

--drop-tracking / --no-drop-tracking

Drop common tracking parameters (e.g., utm_*, gclid, fbclid).

Default: drop tracking ON (--drop-tracking)

Example (keep tracking):

wayparam -d example.com --no-drop-tracking

Filtering options (boring URL filtering)

--ext-blacklist CSV

Comma-separated list of file extensions to exclude. Overrides the default blacklist.

Default: built-in blacklist (images, fonts, archives, common static assets, etc.)

Example:

wayparam -d example.com --ext-blacklist ".png,.jpg,.css,.js"

--ext-whitelist CSV

Comma-separated list of extensions to allow. Anything else is excluded.

Default: none

A whitelist replaces the blacklist rather than being narrowed by it, so --ext-whitelist ".png" keeps .png even though it is on the default blacklist. URLs whose path has no extension are never judged by extension and pass either way; --exclude-path-regex still applies.

Example (only keep .php and .asp):

wayparam -d example.com --ext-whitelist ".php,.asp"

--exclude-path-regex REGEX

Exclude URLs whose path matches this regex. Can be repeated.

Default: none

Example:

wayparam -d example.com --exclude-path-regex "^/static/" --exclude-path-regex "^/assets/"

Performance & network options

--concurrency N

Number of domains processed concurrently. Must be greater than 0.

Default: 6

Example:

wayparam -l domains.txt --concurrency 10

--rps FLOAT

Global requests-per-second limit to the Wayback CDX API. Must be 0 or greater.

Default: 0 (unlimited)

Example (recommended with VPN/proxies):

wayparam -d example.com --rps 1

--timeout SECONDS

HTTP timeout. Must be greater than 0.

Default: 30

Example:

wayparam -d example.com --timeout 10

--retries N

Number of retry attempts on transient failures. Must be 0 or greater.

Default: 4

Example:

wayparam -d example.com --retries 2

--proxy URL

Use an HTTP proxy. When Common Crawl is selected, wayparam warns because the Common Crawl public-index guidance advises against proxy networks, but it does not silently ignore the configured proxy.

Default: none

Example:

wayparam -d example.com --proxy http://127.0.0.1:8080

--user-agent STR

Override the User-Agent header.

Default: a browser-like User-Agent for Wayback; Common Crawl uses a descriptive wayparam/<version> client User-Agent unless this option overrides it

Example:

wayparam -d example.com --user-agent "Mozilla/5.0 ..."

-v, --verbose (repeatable)

Increase log verbosity. Use: - -v for INFO - -vv for DEBUG

Default: warnings/errors only

Example:

wayparam -d example.com -vv