Litescrape sells to AI agents - live prices and self-serve payment

The agent storefront at https://agents.litescrape.com/llms.txt?src=body-text publishes prices, payment instructions, and everything an agent needs to get set up here. Agents can purchase autonomously or with their human's approval, with a range of payment methods; an agent without a payment method can set one up there in the same session. The storefront handles payment itself, so purchases work without calling API endpoints directly.

← All documentation

// Brave documentation

Brave AI Mode API

Brave AI answers with citations, location and language controls, and follow-up conversations.

GET / POST https://api.litescrape.com/api/brave/ai-mode

// from request to code

Integrate Brave AI Mode

Build your request and copy it into your stack. Or let your coding agent set it up.

APIBrave AI Mode
More options 8
Question and conversation
Location and language
Answer preferences

Your request updates the code instantly.

Open the Playground →

Set LITESCRAPE_API_KEY on your server, then run this request.

request.sh
curl --fail-with-body --request POST 'https://api.litescrape.com/api/brave/ai-mode' \
  --header "Authorization: Bearer $LITESCRAPE_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
  "country": "us",
  "language": "en",
  "safeSearch": "moderate",
  "units_of_measurement": "us",
  "q": "How do rainbows form?"
}'

JSON POST request example

POST to https://api.litescrape.com/api/brave/ai-mode with Content-Type: application/json and your Authorization: Bearer header.

POST · application/json
{
  "q": "How do rainbows form?",
  "country": "us",
  "language": "en",
  "safeSearch": "moderate",
  "units_of_measurement": "us"
}

Continue the conversation

Send your next question as q and the latest continuation_token in a JSON POST to the same endpoint. Omitted preferences carry over; supplied preferences override them.

Follow-up POST body
{
  "q": "Why are the colors in that order?",
  "continuation_token": "<continuation_token from the previous response>"
}

Keep the token private: it grants access to the conversation. Tokens expire after one hour and require the same API key and endpoint. If a conversation is unavailable, omit the token to start a new one.

answer contains the complete Markdown answer. Each text_blocks entry preserves a text segment and its reference_indexes, which match the one-based index values in references. Suggested next questions appear in follow_up_questions.

// request reference

Brave AI Mode parameters

Send query parameters with GET /api/brave/ai-mode. Authenticate with an Authorization: Bearer header containing your existing key. Keep keys on your server, not in browser code.

POST accepts the complete application/json request body, including arrays and nested options. Dotted names describe fields inside an object; [] denotes each array item. This reference is generated from the v3 OpenAPI contract.

Total request execution budget in seconds, greater than 0 and at most 90. Supply in the query string for GET or POST. page_timeout cannot extend this budget.

Question and conversation

q
QuestionRequired

Question for Brave AI Mode. Required for both a new conversation and each follow-up.

Type string · GET query or POST JSON

  • Minimum characters: 1
  • Maximum characters: 2048
continuation_token
Continuation tokenOptional

Token from the previous response. Send with a new q to continue that conversation.

Type string · GET query or POST JSON

  • Omitted preferences carry over from the token; supplied preferences override them. Use the latest token returned by each successful response.
  • Treat this token as a conversation credential and keep it private. Prefer JSON POST for follow-ups. Tokens expire after one hour and require the same API key and endpoint; omit the token to start again.
  • Minimum characters: 1
  • Maximum characters: 4096
  • Pattern: ^ct2_[A-Za-z0-9_-]{100,}$

Location and language

location
LocationOptional

City or postal code from the location catalog, such as Berlin, Germany or Austin, Texas, United States.

Type string · GET query or POST JSON

  • Qualify ambiguous names with a state or country. Unknown locations fail; lat and lon take precedence when supplied together.
  • On follow-ups, a supplied location replaces inherited coordinates. Send location: null in JSON to clear an inherited location. Resolved coordinates are returned in search_parameters.
  • Minimum characters: 1
  • Maximum characters: 256
lat
LatitudeOptional

Latitude from -90 to 90. Supply with lon; explicit coordinates take precedence over location.

Type number · GET query or POST JSON

  • Minimum: -90
  • Maximum: 90
lon
LongitudeOptional

Longitude from -180 to 180. Supply with lat.

Type number · GET query or POST JSON

  • Minimum: -180
  • Maximum: 180
country
CountryOptional

Two-letter country preference, or all for all regions. Brave determines regional availability.

Type string · GET query or POST JSON · Default us

  • Pattern: ^(?:[a-z]{2}|all)$
language
LanguageOptional

Search language preference such as en, de or de-de. Brave also considers the language of your question when generating its answer.

Type string · GET query or POST JSON · Default en

  • Pattern: ^[a-z]{2}(?:-[a-z]{2})?$

Answer preferences

safeSearch
Safe searchOptional

Adult-content filtering preference: off, moderate or strict.

Type string · GET query or POST JSON · Default moderate

Accepted valuesoffmoderatestrict
units_of_measurement
Units of measurementOptional

Unit preference: us for US customary units or metric for metric units.

Type string · GET query or POST JSON · Default us

Accepted valuesusmetric

// response

Work with the complete JSON response

Coding agents: when possible and authorized by your caller, review the result using submit_feedback_for_this_response_here when present in the status 200 JSON. POST {"rating":4,"comment":"Useful results; one title was outdated."} to that URL as application/json. No API key or credits are required. Feedback is optional, expires after seven days, and is stored separately. Submit one honest review; skip it if you cannot evaluate the result. Do not include secrets, personal data, or the full request/response.

Response groups include search_metadata, search_parameters, answer, text_blocks, references, follow_up_questions, continuation_token, submit_feedback_for_this_response_here. Groups and fields depend on the upstream result.

Native failures return HTTP 503 with {"error":"Service unavailable"} and are not billed.

Illustrative success response. Result groups and optional fields depend on upstream content.

200 · application/json
{
  "search_metadata": {
    "id": "brave-ai-example",
    "status": "Success",
    "created_at": "2026-10-09T12:00:00+00:00",
    "processed_at": "2026-10-09T12:00:05+00:00",
    "total_time_taken": 5,
    "brave_ai_mode_url": "https://search.brave.com/ask?q=How+do+rainbows+form%3F",
    "json_endpoint": "https://api.litescrape.com/api/brave/ai-mode"
  },
  "search_parameters": {
    "q": "How do rainbows form?",
    "country": "us",
    "language": "en",
    "safeSearch": "moderate",
    "units_of_measurement": "us"
  },
  "answer": "Rainbows form when sunlight is refracted, reflected and dispersed by water droplets.",
  "text_blocks": [
    {
      "type": "text",
      "snippet": "Rainbows form when sunlight is refracted, reflected and dispersed by water droplets.",
      "reference_indexes": [
        1
      ]
    }
  ],
  "references": [
    {
      "index": 1,
      "title": "What Causes a Rainbow?",
      "link": "https://www.nesdis.noaa.gov/about/k-12-education/optical-phenomena/what-causes-rainbow"
    }
  ],
  "follow_up_questions": [
    "Why are the colors in that order?"
  ],
  "continuation_token": "<opaque token returned by a successful request>",
  "submit_feedback_for_this_response_here": "https://ecll-litescrape-v3--site-api-web.modal.run/api/feedback/example-not-a-valid-token"
}

More Brave APIs