---
title: "Cross-domain search"
method: GET
path: "/v1/search"
tags: ["Search"]
---

# Cross-domain search

`GET /v1/search`

## Request

- Base URL: `https://api.dapperglobal.com`
- URL: `https://api.dapperglobal.com/v1/search`
- Auth: API key in header `X-API-Key`

Cross-domain search over Dapper's full document corpus — bills, regulations, consultations, news, and transcripts together. Tries hybrid search (semantic similarity + lexical/keyword RRF + cross-encoder rerank) first; if that's unavailable, timed out, or finds no semantic hit above min_similarity, falls back automatically to a plain title/number substring match over the same corpus — check `meta.mode` ('semantic' or 'keyword_fallback') to see which one answered. Returns the top-K most relevant chunks as document stubs: title, source URL, domain, and similarity score (null for keyword-fallback hits, which have no similarity concept) — use get_document(id) for the full snippet. Use this when the domain is unknown or you want results mixed across domains; pass domain= to scope to just one. If you already know the domain and want full structured rows back directly (not just a title/url stub), prefer that domain's own `q` param instead — e.g. list_bills(q=...) or list_regulations(q=...) — it hits the same underlying search but skips the extra get_document round-trip. Accepts queries in Spanish, Portuguese, or English. Optionally scope by publish date with since/until. Results are always constrained to the countries your API key can access.

## Query parameters

- `q` string, required: Natural language query, title/number, or keyword — tries semantic search first, falls back to a substring match.
- `country_code` string, nullable: Comma-separated country codes to filter, e.g. BR,CO.
- `country_id` string, nullable: Deprecated alias: comma-separated numeric ids, e.g. 8,2.
- `domain` 'bills' | 'regulations' | 'consultations' | 'news' | 'transcripts', nullable: Scope to one domain. Unset searches all five together.
- `since` string, date, nullable: Only documents published on/after this date (source_created_at).
- `until` string, date, nullable: Only documents published on/before this date (source_created_at).
- `top_k` integer: Documents to return. The engine is asked for at most 20; larger values are accepted and clamped to 20.
- `min_similarity` number
- `min_rerank` number, nullable: Cross-encoder floor. Rows the reranker scores below this are dropped and reported under meta.near_misses. Pass null to disable and see everything the similarity floor let through — measured on production, 58% of rows that clear min_similarity are rejected here.

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dapperglobal/apis/dapper-political-intelligence-api.md) · [All operations](https://skmtc.dev/dapperglobal/apis/dapper-political-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dapperglobal/apis/dapper-political-intelligence-api/revisions/f34d9e6a2b0e?raw)
