semrush cli

Organic Research

Analyze organic search rankings, top pages, position changes, and competitor movements.

Organic Research commands read ranking metrics, URL performance, and historical search volatility for any domain or subfolder.

Domain overview and rankings

Inspect search visibility, top organic keywords, and ranking distributions:

semrush domain-overview --domain example.com --database us --json
semrush domain-keywords --domain example.com --positions-type all --json
semrush domain-keywords --domain example.com --positions-type organic --json
semrush domain-keywords --domain example.com --positions-type serp --json
semrush domain-keywords --domain example.com --database mobile-us --json

Key ranking selectors:

  • --positions-type: Choose all (default), organic for standard listings, or serp for SERP-feature positions.
  • --search-type: Target scope, either domain, subdomain, subfolder, or url (default: domain).
  • --database: Target country database (for example, us or mobile-us).
  • --page and --page-size: Control pagination (1-based indexing).
  • --sort-field and --descending: Sort by specific metrics such as trafficPercent or position.

Top pages, subdomains, and competitors

Analyze which sections of a site generate the highest traffic:

semrush domain-pages --domain example.com --page-size 20 --json
semrush domain-subdomains --domain example.com --json
semrush domain-competitors --domain example.com --page-size 10 --json

Tracking position changes

Inspect keyword movements between two historical snapshots:

semrush snapshot-dates --database us --json
semrush domain-position-changes --domain example.com \
  --date-range '{"start_date":"20261015","end_date":"20261016"}' \
  --page-size 20 --json

For daily comparisons, provide both dates in YYYYMMDD format. For monthly comparisons, use YYYYMM with --date-type monthly:

semrush domain-position-changes --domain example.com \
  --date-type monthly \
  --date-range '{"start_date":"202608","end_date":"202609"}' --json

Filtering specific change movements

Limit results to specific movement classifications:

semrush domain-position-changes --domain example.com \
  --date-range '{"start_date":"20261015","end_date":"20261016"}' \
  --change-types '["new","improved"]' --json

Accepted change types in the array are new, improved, declined, and lost.

Retrieve aggregate totals across dropping, trending, and SERP-feature position buckets:

semrush domain-position-changes-presets --domain example.com \
  --date-range '{"start_date":"20261015","end_date":"20261016"}' --json

Inspect long-term ranking trends without table pagination:

semrush domain-position-changes-daily-trend --domain example.com --json
semrush domain-position-changes-monthly-trend --domain example.com --json
semrush domain-trends --domain example.com --date-type monthly --json

AI visibility metrics

Inspect how frequently a domain appears in AI overviews and conversational citation sources:

semrush domain-ai-visibility --domain example.com --json
semrush domain-ai-countries --domain example.com --json
semrush domain-ai-sources --domain example.com --limit 20 --json

On this page