---
title: "Hybrid keyword and semantic search within one filing or transcript. When too few excerpts match every query word, the search automatically broadens to match any of the words — precise matches keep their rank and broader hits only fill the remainder."
method: GET
path: "/v1/filings/{documentId}/search"
tags: ["Search"]
---

# Hybrid keyword and semantic search within one filing or transcript. When too few excerpts match every query word, the search automatically broadens to match any of the words — precise matches keep their rank and broader hits only fill the remainder.

`GET /v1/filings/{documentId}/search`

## Request

- Base URL: `https://api.equibles.com`
- URL: `https://api.equibles.com/v1/filings/{documentId}/search`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/equibles/apis/equibles-api/docs/v1/filings/:documentId/search/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `documentId` string, uuid, required

## Query parameters

- `query` string, required
- `limit` integer

## Response `200`

OK

- DocumentSearchResponse: Search-result envelope (additive over the plain list, #7056): top-k retrieval has no meaningful "total matches", so instead of a fake total the response echoes the applied limit — count == limit means the result set was capped and a larger limit may surface more excerpts. count < limit means no further excerpts cleared relevance at this limit — EXCEPT on endpoints that take maxResultsPerCompany, where a non-zero per-company cap can drop excerpts below the overall limit, so a short page there is not proof of exhaustion.
  - `limit` integer: The applied excerpt cap after clamping.
  - `count` integer: Excerpts returned (equals data.length; count == limit signals the cap bound).
  - `listingNotice` ListingNotice: What happened to a requested ticker that no longer trades. "delisted": the company has no current US listing, so the answer is its history. "renamed": the company now trades as successorTicker, its current US presentation ticker (possibly another share class). A listed series (short volume, short interest, off-exchange volume, fails-to-deliver, congressional trades) is the retired ticker's own; a company-level read is the company's data.
    - `status` string, nullable: "delisted" or "renamed".
    - `ticker` string, nullable: The retired ticker as listed.
    - `delistedOn` string, date, nullable: The day the retired listing stopped trading, when known.
    - `successorTicker` string, nullable: For "renamed", the company's current US presentation ticker; null for "delisted".
  - `data` DocumentSearchResultDto[], nullable
    - `documentId` string, uuid
    - `ticker` string, nullable
    - `companyName` string, nullable
    - `documentType` string, nullable
    - `documentTypeName` string, nullable
    - `filedDate` string, date
    - `chunkIndex` integer
    - `startLineNumber` integer
    - `text` string, nullable
    - `url` string, nullable

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `503`: Service Unavailable

---

[API](https://skmtc.dev/equibles/apis/equibles-api.md) - [All operations](https://skmtc.dev/equibles/apis/equibles-api/llms.txt) - [OpenAPI document](https://skmtc.dev/equibles/apis/equibles-api/revisions/666e06778588?raw)
