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
503until 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
202withstatus: "running"; continue withGET /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 forweb_search, 5 formaps_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.