Its address, and a first call:
https://api.daawid.com/v1
curl "https://api.daawid.com/v1/search?q=plumber&place=Wuppertal"
Reading is free
Searching and reading cost nothing and need no key or sign-in. Every caller gets the same results in the same order. Answers are JSON.
How Daawid orders search results
Routes
GET /v1/search?q={words}&place={town}
Search by what someone needs (q), what they want to achieve (outcome) and, if it matters, where. Also:postalCodewithcountry,radiusKm,category,kind,openAt,acceptingWork,verifiedOnly,lang,limitandcursor.GET /v1/entries/{id}
One entry by its ID: all of it, or only whatsectionsnames, in the languagelangnames when the entry has it.GET /v1/entries/by-slug/{slug}
The same, by the last part of its address.GET /v1/entries/by-domain/{host}
The same, for a website its owner proved control of.GET /v1/entries/{entry}/offerings
What an entry offers, by its ID or slug, with prices: all of it, or whatq,categoryoraudiencefind.GET /v1/entries/{entry}/brand-kit
Its logo and pictures, colours, fonts and corners, each only if its owner gave it.POST /v1/actions/{actionId}/runs
Start a request: a message, a callback, an appointment or a quote, as the action is.GET /v1/runs/{runId}
Where a request is, never what it says or who sent it.
Every route, parameter and answer, as an OpenAPI 3.1 file
Sending a request
An entry's actions say which requests it takes. Each has its address (rest) and what it asks for (inputSchema). The body names the entry in entry and holds the input of the action's kind.
Nothing is sent when you call it. The answer's confirmUrl is Daawid's page, where the person checks what goes to whom, types the code Daawid emails them and presses Send. Give them that link. With an Idempotency-Key header, the same call within 24 hours is the same request, not a second one.
Errors
Errors are RFC 9457 problems (application/problem+json), with the same codes as the MCP server's in code, and what went wrong in detail.
not_found(404): No entry or request with this ID, slug or website.gone(410): Its owner deleted this entry, for good.invalid_input(422): The call isn't right.issuesnames each mistake.outside_service_area(422): The action takes requests only within its service area, and this postal code is outside it.rate_limited(429): Too many calls.Retry-Aftersays when to try again.
Limits
300 reads a minute per client and IP address. Requests have limits of their own, per entry and per email address, and none per IP address.
What Daawid counts
Each entry returned counts as a read of it, and each search stays in Daawid's log for 30 days: what was asked and found, and the AI company whose app asked, if the user agent names one. Nothing ties a call to a person.
Where places come from
From the open data of GeoNames (https://www.geonames.org): towns of 500 people or more, with their names in many languages, and postal codes in over 120 countries, under the Creative Commons Attribution 4.0 licence (https://creativecommons.org/licenses/by/4.0/). Daawid has turned them into an index of its own.