Skip to content
Cross-domain search

Cross-domain search

LiveBeta: the endpoint and its response fields may still change
POSThttps://api.qovia.ai/v1/search

One search across 10 kinds of public sources in China (Weibo, Douyin, Toutiao, Xiaohongshu, Kuaishou and other short-video apps, WeChat official accounts, news sites and newspapers, forums and Tieba, Bilibili and other long-video sites, news apps), filtered by date, platform, content type and sentiment. Returns the results in one format, with the total hit count and the count per platform. Dates are whole days in Beijing time: the last 7 days by default, at most 90. 10 or 20 results per page, up to page 50. A search usually takes a few seconds. No results answers empty and is not charged.

Typical uses: Feeding your analytics, monitoring or AI-agent workflows.

Price
$0.005 / call$5 per 1k
Billing
Charged only for successful, non-empty resultsthe charge is in meta.charged_usd
Scope
searchThe API key needs this scope
Rate limit
NoneNo per-account or per-endpoint request limit

Parameters

Sent as a JSON body

Only these parameters are accepted; any other one returns 400.

querystringRequired

What to search for. Separate terms with spaces to require all of them, as in 人工智能 教育; put words to leave out in exclude_words

Max 200 charsPattern\S

Example人工智能

platformsstring[]

Only these platforms, all by default: weibo, douyin, toutiao, xiaohongshu, short_video (Kuaishou and other short-video apps), wechat (official accounts), news (news sites and newspapers), forum (forums, Tieba and Q&A sites), long_video (Bilibili and other long-video sites), app (news apps)

Defaultweibo, douyin, toutiao, xiaohongshu, short_video, wechat, news, forum, long_video, appOne ofweibo · douyin · toutiao · xiaohongshu · short_video · wechat · news · forum · long_video · app
sincestring

First day, YYYY-MM-DD (Beijing time, included); defaults to 6 days before until

Pattern^[0-9]{4}-[0-9]{2}-[0-9]{2}$
untilstring

Last day, YYYY-MM-DD (Beijing time, included); defaults to today and cannot be later. since to until spans at most 90 days

Pattern^[0-9]{4}-[0-9]{2}-[0-9]{2}$
typesstring[]

Content types, all by default: original, repost, comment

Defaultoriginal, repost, commentOne oforiginal · repost · comment
sentimentstring[]

Sentiment, all by default: negative, neutral, positive

Defaultnegative, neutral, positiveOne ofnegative · neutral · positive
matchstring[]

Where the search terms must match, title, content and author by default: title, content, author (author name), media_text (images and video frames), audio

Defaulttitle, content, authorOne oftitle · content · author · media_text · audio
exclude_wordsstring

Filter words; results that contain them are left out

Max 100 chars
authorstring

Only content published by this author (account name)

Max 50 chars
pageinteger

Page number, from 1, at most 50

Default1Range1–50
limitinteger · enum

Results per page: 10 or 20

Default20One of10 · 20

Response

A success is HTTP 200 with the shared envelope: request_id, data (this endpoint's data, see the example) and meta (the charge). An empty result is also 200, with meta.empty true, not charged, and data may be an empty structure or null.

The response envelope in detail

Errors

Errors this endpoint can return
codeHTTPBillingDescription
scope_denied403Not chargedThis API key lacks the scope the endpoint requires.
endpoint_unavailable503Not chargedThe endpoint is not available right now (no data source connected yet, or no price configured); nothing ran.
invalid_params400Not chargedThe parameters failed validation: a required one is missing, a type or format is wrong, an array has more items than allowed, an unknown one was sent, or the POST body is not a JSON object. An error in one parameter starts with its name (item_id: …); a missing or unknown parameter starts with params: ….
insufficient_balance402Not chargedThe balance cannot pay for this call; top up first.
upstream_busyRetryable503RefundedThe data source is busy or cooling down; refunded. Retry after Retry-After.
upstream_timeout504RefundedThe data source timed out; refunded.
upstream_error502 / 503RefundedThe data source failed; refunded.
upstream_rejected400RefundedThe data source rejected these parameters (well-formed, but not accepted); refunded.
not_found404RefundedThe data source has no such item (deleted, or the ID does not exist); refunded.
reservation_expired504RefundedThe call took too long and was refunded automatically; no data is returned.

Any request can also fail authentication: 401 invalid_api_key, 403 account_disabled, 429 too_many_auth_failures.

Every error code
Call it from your browser

Needs an account with a balance; playground calls are billed like API calls.