Skip to main content
This page is a complete, self-contained reference for building against Tako Search. It is written for coding agents (and developers in a hurry): every example runs after you supply an API key, every parameter is grounded in the live API, and the common mistakes are called out explicitly. For the auto-generated schema, see the Search API reference; for a narrative introduction, see the Overview.

What Search does

POST https://tako.com/api/v3/search takes a natural-language query and returns both data results — Tako knowledge cards (interactive, embeddable data visualizations with structured fields, named sources, and methodology) — and web search results, with no synthesized answer on top. Reach for it when you want to render or post-process the results yourself. Responses are compact and fast, so you can call it frequently and in parallel inside agentic loops. Unlike a web-search API that returns text snippets, each Tako card is a live visualization backed by structured data and attribution — so you get renderable, citable results, not just links.
  • Base URL: https://tako.com/api/
  • Auth: send your API key in the X-API-Key request header (not a bearer token). Create a key in the Tako console.
  • Request body is shared with Answer — the only difference is Answer adds a synthesized answer string.

Install

Minimal working example

Each snippet makes the same call and is complete after you set TAKO_API_KEY.

Request parameters

The body is a SearchRequest. Only query is required.
instant effort cannot be combined with sources.data.defer_data_retrievalinstant serves cached embeds and skips the retrieval that defer_data_retrieval defers.

Forcing entity boundaries in query

Tako identifies the entities in the query before it searches. Double quotes force a phrase to be exactly one entity, and an optional :LABEL suffix sets its type. Use this when you already know the entity — an agent usually does.
Labels: PERSON, ORG, GPE, LOC, PRODUCT, DATE, EVENT, MONEY, CARDINAL, METRIC, TIME_PERIOD, UNITS. Quoting is all-or-nothing: every " in the query must belong to a non-empty pair of 80 characters or less. If one quote is unmatched, Tako ignores every quote in that query and searches as usual, so an ordinary web-style phrase query still works. An unrecognized label stays in the query text. The quotes never reach the search text. Answer accepts the same syntax.

Latency

Target p50 latency (not a guarantee), by effort:

Choosing sources

By default Search queries both Tako’s curated knowledge graph (data) and the live web (web), 5 results each. sources is an object whose keys select the indexes — a source is searched only if its key is present. Each source takes optional per-source settings:
The legacy key tako is accepted as a synonym for data and is mapped to it. Prefer data in new code.

What a response looks like

A 200 returns a SearchResponse:
Each card (TakoCard) carries: Search is for fast, structured data retrieval — cards and web results you render or post-process yourself, with no synthesized answer. Reach for it when:
  • You want structured results, not prose. No answer-synthesis LLM call in the path, so responses come back fast — about 500 ms on the default fast effort (see Latency) — call it frequently and fan out across many entities in parallel.
  • You’re feeding an agentic loop that needs a lot of accurate data, fast. One query per entity; act on the structured cards instead of waiting on generated text.
  • You want more than a single value. Each result is a knowledge card — a full series with named sources and methodology — so one call returns the surrounding context too, ready to render or compute on.
  • You want broad coverage. Search queries Tako’s curated knowledge graph and the live web by default, so you get a meaningful result across far more queries than either source alone.
Want prose instead? Use Answer for a synthesized, source-attributed answer over the same data in one call. Need multi-step reasoning — resolving a cohort, ranking a set, multi-hop aggregation? Use the Agent.

Downloading the underlying data

A result whose data is downloadable includes a content descriptor. Pass that result’s webpage_url (for a card) or url (for a web result) to Contents (POST /v1/contents) to download it — a CSV of a Tako card’s data, or extracted text for a web page. Not every result carries one: when a result’s underlying data can’t be exported, content is omitted. Treat its absence as “no download available” and skip the Contents call for that result. See the Contents For Your Coding Agent page for the full request and response reference, including url vs inline delivery modes. To skip the second call, inline the data in this response with the per-source include_contents setting.

Common mistakes

Avoid these — they are the patterns coding agents most often get wrong.

Errors

Failures return a BaseAPIError body: { "error_message": "...", "error_type": "..." }.