ChatGPT API

ChatGPT Search API

Ask ChatGPT a web-grounded question and receive an answer with source citations. ChatGPT composes each answer per request, so the same prompt returns different wording and a different source set.

$1.80/1k req, pay per request, no subscription.

What the API returnedcitations[0]
{
"title": "The 5 Best Budget Robot Vacuums of 2026",
"url": "https://www.rtings.com/vacuum/reviews/best/robot/budget",
"answerPosition": 1
}
Uptime
99.75%
30d · 1,977 calls
Requests
2,006
30d · weekly, last 12 wks
Response
24.2s
median · 30d

Pricing and providers

ChatGPT Search API pricing: one API, 3 interchangeable providers

The cheapest provider serves first. If it fails, the next one takes over in the same call.

You pay
$18.00
$1.80/1k req, only for what you use. No monthly plan.
Your first 55 requests are free with the $0.10 starting balance.

Try it

Get ChatGPT search in one request

requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `cited` or `ads`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.

This sample shows 31 of 50 fields. See every field

{
  "found": true,
  "data": {
    "prompt": "What's the best budget robot vacuum for pet hair in 2026?",
    "answer": "For pet hair on a budget, the Roborock Q5 Pro and the Eufy X10 Pro Omni are the two most recommended models this year. The Roborock Q5 Pro pairs strong 5,500Pa suction with a self-emptying dock for under $400, while the Eufy X10 Pro Omni adds mopping and a wash-and-dry base for closer to $600. Reviewers consistently flag both as better at pulling hair off carpet than cheaper sub-$200 models.",
    "answerMarkdown": "For pet hair on a budget, the **Roborock Q5 Pro** and the **Eufy X10 Pro Omni** are the two most recommended models this year. The Roborock Q5 Pro pairs strong 5,500Pa suction with a self-emptying dock for under $400, while the Eufy X10 Pro Omni adds mopping and a wash-and-dry base for closer to $600. Reviewers consistently flag both as better at pulling hair off carpet than cheaper sub-$200 models.",
    "webSearchTriggered": true,
    "model": "gpt-5-search",
    "searchQueries": [
      "best budget robot vacuum pet hair 2026",
      "roborock q5 pro vs eufy x10 pro omni"
    ],
    "citations": [
      {
        "title": "The 5 Best Budget Robot Vacuums of 2026",
        "url": "https://www.rtings.com/vacuum/reviews/best/robot/budget",
        "answerPosition": 1
      },
      {
        "title": "The Best Robot Vacuum for Pet Hair",
        "url": "https://www.wirecutter.com/reviews/best-robot-vacuum/",
        "answerPosition": 2
      }
    ],
    "searchResults": [
      {
        "url": "https://www.rtings.com/vacuum/reviews/best/robot/budget",
        "title": "The 5 Best Budget Robot Vacuums of 2026",
        "cited": true
      },
      {
        "url": "https://www.wirecutter.com/reviews/best-robot-vacuum/",
        "title": "The Best Robot Vacuum for Pet Hair",
        "cited": true
      },
      {
        "url": "https://www.reddit.com/r/robotvacuums/comments/budget_pet_hair",
        "title": "Budget robot vacuum recs for pet hair?",
        "cited": false
      }
    ],
    "shoppingCards": [
      {
        "title": "Roborock Q5 Pro Robot Vacuum",
        "price": 379.99,
        "currency": "USD",
        "merchants": "Amazon",
        "url": "https://www.amazon.com/dp/B0CQ5PRO01",
        "image": "https://m.media-amazon.com/images/I/61Q5ProVacuum.jpg",
        "rating": 4.5,
        "description": "5,500Pa suction with self-empty dock"
      },
      {
        "title": "Eufy X10 Pro Omni",
        "price": 599.99,
        "currency": "USD",
        "merchants": "Best Buy",
        "url": "https://www.bestbuy.com/site/eufy-x10-pro-omni/6591234.p",
        "image": "https://pisces.bbystatic.com/image2/eufy-x10-pro.jpg",
        "rating": 4.6,
        "description": "Mopping and wash-and-dry base station"
      }
    ],
    "entities": [
      {
        "title": "Roborock",
        "category": "Company",
        "url": "https://us.roborock.com",
        "domain": "roborock.com"
      },
      {
        "title": "Eufy",
        "category": "Company",
        "url": "https://www.eufy.com",
        "domain": "eufy.com"
      }
    ],
    "createdUtc": 1780000000
  }
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

One request, one response shape.

Every field you send and every field you get back, each with a real example.

Last verified 2026-11-14 · uptime and latency measured over 30d

Request body

JSON, posted to this endpoint.

  • promptstring

    What's the best budget robot vacuum for pet hair in 2026?

    Question or research prompt for ChatGPT to answer using web search.

  • countrystring

    US

    ISO-3166 alpha-2 country to ask from, e.g. US, GB, DE. ChatGPT localizes both the pages it retrieves and the answer it writes, so this is the difference between what a US buyer and a UK buyer are told.

  • requireAdsboolean

    Serve only from a source that can return sponsored placements shown with the answer. One source currently qualifies, so the request cannot fall back when it is unavailable.

  • requireEntitiesboolean

    Serve only from a source that can return brands and other named entities recognized in the answer. One source currently qualifies, so the request cannot fall back when it is unavailable.

  • requireFieldsarray

    Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `cited` or `ads`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.

  • requirePlacesboolean

    Serve only from a source that can return places shown with the answer. Leaving this off still returns places whenever the source that answered can. Turning it on selects the single source that guarantees them, which costs more and has nothing to fall back to if it is unavailable.

  • requireShoppingCardsboolean

    true

    Serve only from a source that can return shopping cards shown with the answer. Leaving this off still returns shopping cards whenever the source that answered can. Turning it on selects the single source that guarantees them, which costs more and has nothing to fall back to if it is unavailable.

  • webSearchenum

    force

    Whether to insist ChatGPT browses the web. force instructs it to search and is the default; auto lets ChatGPT decide, which is cheaper and answers from memory roughly half the time. Check webSearchTriggered for what actually happened - an answer written without a search is not web-grounded.

You send. A small JSON body. The values shown are examples to replace with your own.

Response

JSON, one example value per field.

each addata.ads[]

Sponsored placements ChatGPT displayed with the answer. null means the source that answered cannot report ads; an empty array means none were shown.

  • advertiserNamestringcan require

    Advertiser name.

  • advertiserUrlstringcan require

    Advertiser URL, tracking parameters stripped.

  • domainstringcan require

    Advertised domain.

  • imagestring

    Sponsored image URL.

  • snippetstringcan require

    Sponsored placement text.

  • titlestring

    Sponsored placement title.

  • urlstring

    Sponsored destination URL, tracking parameters stripped.

datadata

The normalized answer and citations, or null when no answer was found.

  • answerstring

    For pet hair on a budget, the Roborock Q5 Pro and the Eufy X10 Pro Omni are the two most recommended models this year. The Roborock Q5 Pro pairs strong 5,500Pa suction with a self-emptying dock for under $400, while the Eufy X10 Pro Omni adds mopping and a wash-and-dry base for closer to $600. Reviewers consistently flag both as better at pulling hair off carpet than cheaper sub-$200 models.

    The web-grounded answer as text. Populated whenever the provider has data for the entity.

  • answerMarkdownstring

    For pet hair on a budget, the **Roborock Q5 Pro** and the **Eufy X10 Pro Omni** are the two most recommended models this year. The Roborock Q5 Pro pairs strong 5,500Pa suction with a self-emptying dock for under $400, while the Eufy X10 Pro Omni adds mopping and a wash-and-dry base for closer to $600. Reviewers consistently flag both as better at pulling hair off carpet than cheaper sub-$200 models.

    The answer in Markdown when the engine returns a Markdown rendering, otherwise the same text as answer. Populated whenever the provider has data for the entity.

  • createdUtcnumbercan require

    1780000000

    UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. null means the source that answered does not report when it answered.

  • modelstringcan require

    gpt-5-search

    The ChatGPT model that produced the answer. null means the source that answered does not report it, which is not the same as an unknown model.

  • promptstring

    What's the best budget robot vacuum for pet hair in 2026?

    The prompt answered by ChatGPT.

  • searchQueriesstring[]can require

    The web search queries ChatGPT ran to ground its answer. null means the source that answered cannot report them; an empty array means it searched with none recorded.

  • webSearchTriggeredbooleancan require

    true

    Whether ChatGPT actually ran a web search before answering. ChatGPT decides this per session, and an answer written without one is not web-grounded. null means the source that answered cannot report it, which is not the same as false.

each citationdata.citations[]

Sources cited by the answer. Populated whenever the provider has data for the entity.

  • answerPositionintegercan require

    1

    One-based answer section where ChatGPT cited this source. null means the source that answered cannot report the position.

  • titlestring

    The 5 Best Budget Robot Vacuums of 2026

    Source page title when supplied by the search engine.

  • urlstring

    https://www.rtings.com/vacuum/reviews/best/robot/budget

    Source page URL.

each entitydata.entities[]

Brands and other named entities recognized in the answer. null means the source that answered cannot report them; an empty array means none were identified.

  • categorystringcan require

    Company

    Entity category.

  • domainstringcan require

    roborock.com

    Entity domain.

  • titlestring

    Roborock

    Entity name.

  • urlstring

    https://us.roborock.com

    Entity URL, tracking parameters stripped.

each placedata.places[]

Places and local businesses ChatGPT displayed with the answer. null means the source that answered cannot report them; an empty array means none were shown.

  • addressstringcan require

    Place address as displayed.

  • categorystringcan require

    Place category shown by ChatGPT.

  • descriptionstringcan require

    Place description shown by ChatGPT.

  • namestringcan require

    Place or business name.

  • phonestringcan require

    Place phone number as displayed.

  • positionintegercan require

    One-based position in the places block.

  • ratingnumber

    Place rating when the source reports one.

  • reviewCountintegercan require

    Number of reviews behind the displayed rating.

  • websiteUrlstringcan require

    Place website URL with tracking parameters stripped; an id parameter is kept, since a page such as Facebook profile.php needs it.

each searchResultdata.searchResults[]

Pages ChatGPT retrieved while answering. A SUPERSET of citations: a page can be read and not cited. null means the source that answered cannot report them.

  • citedbooleancan require

    true

    Whether this retrieved page made it into citations. false means ChatGPT read the page and chose not to cite it, which is a different and more actionable fact than the page being absent.

  • titlestring

    The 5 Best Budget Robot Vacuums of 2026

    Title of the retrieved page, empty when the source did not send one.

  • urlstring

    https://www.rtings.com/vacuum/reviews/best/robot/budget

    Canonical URL of the retrieved page, tracking parameters stripped.

each shoppingCarddata.shoppingCards[]

Products ChatGPT displayed with the answer. null means the source that answered cannot report shopping cards; an empty array means none were shown.

  • currencystringcan require

    USD

    ISO 4217 currency code when the source reports it.

  • descriptionstringcan require

    5,500Pa suction with self-empty dock

    Product description shown on the shopping card.

  • imagestring

    https://m.media-amazon.com/images/I/61Q5ProVacuum.jpg

    Product image URL.

  • merchantsstring

    Amazon

    Merchant name shown on the shopping card.

  • pricenumber

    379.99

    Displayed product price as a number when the source reports one.

  • ratingnumber

    4.5

    Product rating when the source reports one.

  • titlestring

    Roborock Q5 Pro Robot Vacuum

    Product name shown by ChatGPT.

  • urlstring

    https://www.amazon.com/dp/B0CQ5PRO01

    Product page URL with its query kept, since the query can name the product variant (e.g. color and size).

top level
  • foundboolean

    true

    Whether ChatGPT returned a web-grounded answer.

  • reason"not_found"

    Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.

You get back. Named, typed fields in the same shape whichever source answers.

FAQ

About the ChatGPT Search API

The AnyAPI ChatGPT Search API returns ChatGPT search data as normalized JSON from one POST call to /v1/run/chatgpt.search. Ask ChatGPT a web-grounded question and receive an answer with source citations. ChatGPT composes each answer per request, so the same prompt returns different wording and a different source set. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $1.80 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 99.7% of ChatGPT search calls through AnyAPI succeeded, with a median response time of 24.2 seconds across 1,977 measured calls.

It costs from $1.80 per 1,000 requests, in US dollars with no subscription and no monthly minimum. You fund one USD wallet and each call draws it down. Some failed wallet-funded requests incur processing charges that we pass through at cost, with no markup; the error response shows the amount charged.

Ask ChatGPT a web-grounded question and receive an answer with source citations. ChatGPT composes each answer per request, so the same prompt returns different wording and a different source set. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 99.7% of ChatGPT search calls through AnyAPI succeeded, with a median response time of 24.2 seconds across 1,977 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.

Yes. A new AnyAPI account starts with $0.10 of free balance and no card required, which covers 55 ChatGPT Search calls at $0.0018 each.

AnyAPI asks the next of its 3 sources in the same request, cheapest first, so one source going down does not fail your call.

Send a POST request to https://api.getanyapi.com/v1/run/chatgpt.search with your AnyAPI key in an "Authorization: Bearer" header and the input as a JSON body. The same key and the same wallet work on every AnyAPI endpoint.

No. You add US dollars to one prepaid AnyAPI balance and each request draws it down. There is no monthly plan and no minimum, and the same balance pays for every AnyAPI endpoint.

Yes. Install @getanyapi/sdk from npm for TypeScript or getanyapi from pip for Python. Both call every AnyAPI endpoint with the same key, and any HTTP client works too.

Yes. An agent can connect to the AnyAPI MCP server at https://api.getanyapi.com/mcp, or create its own free-trial key with one unauthenticated POST to https://api.getanyapi.com/agent/signup and call this endpoint over HTTP.