Truegle API
One public endpoint. No key, no account, no sign-up form. Send a query, get web results back as JSON. It is the same API the Truegle website runs on, which is the only honest way to publish one — if it breaks for you it breaks for us.
Base URLhttps://api.truegle.info
There is no step before this one. Paste it into a terminal.
curl -X POST https://api.truegle.info/api/search \
-H 'Content-Type: application/json' \
-H 'X-Truegle-Client: my-app' \
-d '{"query": "how do tides work", "mode": "blue-pill"}'POST /api/search, with a JSON body and two headers: Content-Type: application/json and X-Truegle-Client.
| Field | Type | Meaning |
| query | string, required | What to search for. 1–300 characters. |
| mode | string, optional | Which lens to search through. Defaults to blue-pill (mainstream). See Modes below. |
| filters | object, optional | Narrowing options — time range, language, safe search. Unknown keys are ignored rather than rejected. |
Send X-Truegle-Client with a short name for your project — my-app, acme-dashboard, whatever you would call it out loud. Letters, digits, spaces and . _ - /, up to 64 characters.
Without it, Truegle treats the request as anonymous automation and answers 403. That is not a key and it is not a security measure — anyone can type anything in there. It exists so that a person who read this page and a scraper hammering us anonymously are not the same request to us, and so there is something to name in a log when one integration misbehaves rather than throttling everybody.
{
"success": true,
"query": "how do tides work",
"resultCount": 18,
"results": [
{
"title": "Tides and Water Levels",
"url": "https://oceanservice.noaa.gov/education/tutorial_tides/",
"snippet": "Tides are very long-period waves that move through the ocean…",
"source": "searxng",
"date": "2024-06-11T00:00:00.000Z"
}
],
"instantAnswer": null,
"timestamp": "2026-08-20T09:12:44.118Z"
}Every entry in results has the same five fields.
| Field | Type | Meaning |
| title | string | The page title as the source published it. |
| url | string | The result’s address. Always absolute, always http(s). |
| snippet | string | A short extract. May be empty when the source gave none. |
| source | string | Which index the result came from. |
| date | string | null | ISO 8601 publication date, or null when the source did not state one. It is never guessed. |
A search that finds nothing returns success: true with an empty results array — an empty web is not an error. Genuine failures use the HTTP status: 400 for a missing or malformed query, 429 when you are going too fast, 5xx when it is our fault.
Truegle searches the same web through different lenses. The mode changes which sources are weighted, not which are permitted — nothing is hidden from you in any mode.
| Mode | What it does |
| blue-pill | Mainstream. What the consensus web says. The default. |
| red-pill | Rabbit Hole. Reaches past the first page of consensus. |
| ocean | Privacy / OSINT. Weighted toward primary and public-record sources. |
| green | Summarize. Same results, condensed. |
429; back off and retry rather than retrying immediately.X-Truegle-Client header is answered 403, whatever else it sends.The same thing we do with searches on the website, which is close to nothing. We do not build a profile, we do not set a cookie, and there is no account to attach anything to. Queries are logged in aggregate to produce a trending list, without anything identifying attached.
If you are passing your users' searches through this API, you are the one holding their trust. Do not send us anything about them beyond the words they typed — we do not want it and we have nowhere to put it.
Use of this API is covered by the Terms of Service and the Privacy Policy. Attribute results to Truegle where you display them. Bulk collection for model training is a separate licence — see AI licensing.
Questions, bug reports, or a use case that needs more than fair use: [email protected]. A real person reads it.