The Documentation Search API is in public preview and available to everyone without opting in. The response format and rate limits may change during the preview. Responses include "stability": "preview" in meta.
Documentation Search API
Last verified 11 Nov 2026
The Documentation Search API returns ranked DigitalOcean documentation pages for a keyword query as JSON. It uses the same index and ranking as the docs-search tool on the Documentation MCP server, so both return the same pages. Use it from scripts, IDE plugins, and retrieval pipelines that don’t use MCP. It requires no API token or account.
Endpoint
Send a GET request to the following endpoint:
https://docs.mcp.digitalocean.com/v1/search| Parameter | Required | Description |
|---|---|---|
q |
Yes | Search keywords, up to 256 bytes. |
limit |
No | Number of results to return, from 1 to 50. Defaults to 10. |
product |
No | Restricts results to one product or area, such as droplets, app platform, vpc, support, or api. |
The endpoint rejects unknown or repeated parameters with a 400 error.
Example
The following request searches for pages about deploying container images and returns the top two results:
curl 'https://docs.mcp.digitalocean.com/v1/search?q=deploy+from+container+image&limit=2'The response lists the matching pages in results and describes the search in meta:
{
"results": [
{
"title": "How to Deploy from Container Images",
"url": "https://docs.digitalocean.com/products/app-platform/how-to/deploy-from-container-images/",
"markdown_url": "https://docs.digitalocean.com/products/app-platform/how-to/deploy-from-container-images/index.html.md",
"product": "App Platform",
"page_type": "how-to",
"last_modified": "2026-07-13",
"excerpt": "You can deploy containerized apps to App Platform from supported container registries..."
},
{
"title": "How to Use Container Images for Paperspace Deployments",
"url": "https://docs.digitalocean.com/products/paperspace/deployments/how-to/use-images/",
"markdown_url": "https://docs.digitalocean.com/products/paperspace/deployments/how-to/use-images/index.html.md",
"product": "Paperspace",
"page_type": "how-to",
"last_modified": "2023-12-14",
"excerpt": "Container images are required to run a Paperspace App..."
}
],
"meta": {
"query": "deploy from container image",
"total": 2,
"pages_searched": 6587,
"stability": "preview"
}
}To read a full page, fetch its markdown_url.
Response Fields
Each object in results has the following fields. Fields without a value are omitted.
| Field | Description |
|---|---|
title |
Page title. |
url |
Canonical URL of the page. |
markdown_url |
Markdown version of the page. |
product |
Product or area the page belongs to. |
page_type |
Kind of page, such as how-to, reference, support, or getting-started. |
last_modified |
Date the page was last updated, in YYYY-MM-DD format. |
excerpt |
Passage from the page body that matches the query, or the page description when no passage matches. |
The meta object contains query, product (when you set it), total (the number of results returned), pages_searched, and stability.
Ranking uses page titles, descriptions, products, and URLs. Page body text is used for excerpts but not for ranking, so a query for a term that only appears in a page body, such as an exact error string, may not find that page.
Errors
Errors return a JSON body with an id and a message:
| Status | id |
Cause |
|---|---|---|
400 |
bad_request |
A missing, invalid, unknown, or repeated parameter. |
405 |
method_not_allowed |
A method other than GET. |
429 |
too_many_requests |
The rate limit for your IP address was exceeded. |
503 |
service_unavailable |
The documentation index is temporarily unavailable. Retry later. |
Rate Limits
Requests are rate limited per client IP address. When you exceed the limit, the response has status 429 and a Retry-After header with the number of seconds to wait. Successful responses are cached for up to five minutes, so repeating the same query does not return newer results within that window.
To process the whole documentation set, such as to build your own search index, don’t page through search results. Use the bulk feeds instead:
llms-index.jsonlists every page with its title, description, product, URL, and last-modified date.docs-corpus.jsonlcontains page content in chunks, split into shards that you can fetch and update individually.- Every page has a Markdown version at its URL with
index.html.mdappended.