Developer Docs › Web Data

Web DataAlpha

Call web search, page fetch, map places and company contacts tools with the same API key and balance, billed per item.

Alpha feature: invitation only for now; endpoints, fields and prices may change, and there is no SLA. Calls return 503 until your account is enabled; apply for a trial on the "Web Data" page in the console. Some sites do not offer this feature yet.

Why web data

A model on its own does not know what happened today and cannot look up a company's website or contact details. AI apps, agents and lead-generation workflows usually end up wiring in a separate search provider and a separate scraping service, each with its own sign-up, top-up and billing.

OneFast API brings a few of the most useful, curated web data tools into the same gateway:

  • One key, one balance: the same API key you use for models; charges go to the same account and every call is in your logs.
  • Consistent output: no need to pick scrapers or tune parameters; each tool returns fixed-shape JSON you can hand straight to a model.
  • Billed per item, failures are free: you pay only for the data you actually get.

Only public web pages, businesses and company information are collected; social networks and personal profile pages are not supported. You are responsible for the lawful use of the data.

Endpoints

POST https://api.onefast.ai/v1/webdata/{tool}        # submit a job
GET  https://api.onefast.ai/v1/webdata/jobs/{id}     # query a job
GET  https://api.onefast.ai/v1/webdata/tools         # list available tools and parameters
Authorization: Bearer sk-xxx

Tools

Tool Purpose Required Optional Default / max items
web_search Web search results (organic ranking) query country (two-letter code, e.g. us, ru), language (e.g. en, ru) 10 / 100
fetch_page Fetch one public web page as clean Markdown url — 1 / 1
maps_places Find businesses on the map by keyword and area query, location language (default en) 20 / 200
company_contacts Extract public emails, phones and social links from a company website domain — 1 / 1

Example

cURL

curl https://api.onefast.ai/v1/webdata/maps_places \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input": {"query": "dental clinic", "location": "Dubai, UAE"}, "max_items": 20}'

Python

import requests

r = requests.post(
    "https://api.onefast.ai/v1/webdata/web_search",
    headers={"Authorization": "Bearer sk-xxx"},
    json={"input": {"query": "industrial chillers supplier", "country": "ae"}, "max_items": 10},
    timeout=90,
)
print(r.json())

Parameters can go inside input or directly at the top level of the body.

Field Description
input Tool parameters, see the table above
max_items Maximum number of items, up to the tool's limit
async With true (or the query parameter ?async=1) the job ID is returned immediately; fetch the result later with the query endpoint

Response:

{
  "id": "wd_...",
  "object": "webdata.job",
  "tool": "maps_places",
  "status": "succeeded",
  "usage": { "max_items": 20, "charged_items": 18, "cached": false, "charged_usd": 0.108 },
  "items": [ { "name": "...", "address": "...", "phone": "...", "website": "...", "rating": 4.7 } ]
}
  • status: running / succeeded / failed.
  • Synchronous calls wait at most 60 seconds; after that you get 202 with status: "running"; continue with GET /v1/webdata/jobs/{id}.

Billing

  • Billed per item; prices are in the model catalog (model names are webdata-<tool>).
  • On submission max_items × unit price is held; after the job finishes you are charged for the actual number of items and the rest is refunded. Some tools have a minimum billable count (e.g. 10 for web_search, 5 for maps_places).
  • Zero results or a failed job are free; cached results are billed as usual.

Errors

Errors look like {"error": {"message": "...", "type": "webdata_error", "code": "..."}}:

code Status Description
invalid_request 400 Missing or invalid parameter, e.g. query is required, social network domains are not supported
tool_not_found 404 Unknown tool name
insufficient_quota 403 Not enough balance or key quota for the hold
no_available_channel 503 Not enabled for your account, or temporarily unavailable
upstream_error 502 The data source failed temporarily; you were not charged

You can also use these tools directly from MCP-capable AI clients; see MCP.