Chinese AI Brand Visibility — Kimi, GLM, DeepSeek & Qwen
Pricing
from $34.00 / 1,000 grounded model observations
Chinese AI Brand Visibility — Kimi, GLM, DeepSeek & Qwen
Measure whether and where a brand appears in grounded answers from four leading Chinese AI model families, with citations and no buyer API key.
See whether your brand appears, where it ranks, which competitors appear first, and which web pages support the answer across four Chinese AI model families. One run turns the same buyer-intent question into comparable, citation-bearing rows—without requiring your own model key.

What you get
- One comparable row per query and model. Track Kimi, GLM, DeepSeek and Qwen against the same brand, market, language and buyer question.
- Mention and position, not just raw prose. Each grounded row records
mentioned, a one-basedposition, the first detected competitor and the model's ordered brand list. - Inspectable web evidence.
citedUrls,citedDomains,toolsUsedand structured citation annotations stay with the answer they support. - Useful failures instead of silent gaps. A model timeout, malformed response or ungrounded answer becomes a free
status: "error"diagnostic row. - No buyer model API key. This Actor pays its model dependency from the publisher account; buyers see only this Actor's published pay-per-event charges.
Use it for AI-search monitoring, GEO baselines, competitor share-of-answer research, market-by-market message testing, or a recurring Dataset feed for dashboards and alerts.
Quick start
Open the public Task Compare Nike visibility across Kimi, GLM, DeepSeek and Qwen for a tested four-model example. Its buyer-friendly configuration asks one query, runs two models at a time, allows 300 seconds, and caps the total charge at $0.18.
To create your own run:
- Enter the exact brand or product name you want to track.
- Add up to ten known competitors if you want explicit competitor matching.
- Add one to five unique buyer-intent questions.
- Select one to four models, then choose the market and answer language.
- Set a maximum total charge that covers the observations you want.
- After a
SUCCEEDEDrun, open the default Dataset and filterstatustogroundedorerror.
{"brand": "Nike","competitors": ["Adidas", "New Balance", "On"],"queries": ["Which sustainable running shoe brands should a US buyer compare?"],"models": ["moonshotai/kimi-k2.6","z-ai/glm-4.6","deepseek/deepseek-chat-v3.1","qwen/qwen3-30b-a3b"],"market": "United States","language": "English","maxModelConcurrency": 2}
Input
| Field | Required | Limits | What it controls |
|---|---|---|---|
brand | yes | 1–100 characters | Exact brand, company or product name matched in the structured brand order and answer. |
queries | yes | 1–5 unique strings, 3–300 characters each | Buyer questions. Every query runs once against every selected model. |
competitors | no | up to 10 unique names | Known competitor labels. They do not alter the model list or suppress other detected brands. |
models | no | 1–4 fixed IDs | Kimi K2.6, GLM 4.6, DeepSeek V3.1 and Qwen3 30B A3B; all four are selected by default. |
market | no | 2–80 characters | Country or region used as buyer context; defaults to United States. |
language | no | 2–40 characters | Natural-language answer name; defaults to English. |
maxModelConcurrency | no | 1 or 2 | Number of child model batches run in parallel; defaults to 2. |
Maximum potential observations are unique queries × selected models, up to 20. Duplicate list values are normalized away, unsupported model IDs and unknown fields are rejected, and arbitrary model/provider configuration is not accepted.
How grounding and ranking work
For each model, the Actor sends the same neutral market-research prompt to the public paid dependency fayoussef/bulk-llm-runner (immutable Actor ID 0pArcqOZFSjoCBlJX). The dependency is required to use web search and return a JSON object containing a bounded answer plus brands in first-mention order.
A row is grounded only when all of these are present:
- the dependency run succeeds;
- the response is a complete parseable object with a non-empty ordered brand list;
- the dependency reports the
web_searchtool; and - at least one structured HTTP(S) URL citation is attached.
mentioned uses normalized whole-token brand matching. position is the brand's one-based index in brandsMentioned, or null when the brand is absent from that list. competitor is the first known competitor in the ordered list; when none of the supplied competitors match, it is the first other brand returned by the model.

Output
The default Dataset contains both paid grounded observations and free diagnostic rows. This abbreviated example is from a successful four-model public Task run:
{"schemaVersion": "1.0","status": "grounded","brand": "Nike","competitor": "On","query": "Which sustainable running shoe brands should a US buyer compare?","modelFamily": "Kimi","modelId": "moonshotai/kimi-k2.6","market": "United States","language": "English","mentioned": true,"position": 4,"citedDomains": ["thegoodtrade.com","theenvironmentalblog.org","goodonyou.eco","growthscribe.com","shopback.com"],"groundingStatus": "dependency-web-search","sourceActorId": "0pArcqOZFSjoCBlJX","sourceRunId": "P7S2vPPH4IkvWUMXU","error": null}
Each grounded row also includes a bounded answerSnippet, full structured citedUrls, checkedAt, the dependency Dataset ID, reported token/cost metadata, and an evidence object with the bounded answer, ordered brands, matched known competitors, tools and citations.
Each error row keeps the requested brand, query, model, market and language, but sets groundingStatus to ungrounded, leaves rank and evidence empty, and carries a bounded redacted error. Do not count error rows as negative brand findings.
The run's key-value store record OUTPUT summarizes requested, attempted, grounded, delivered, billed and error counts plus dependency run IDs. Child accounting in that record is a pre-exit observation; terminal platform cost is authoritative only after the run finishes.
Pricing and charge safety
This Actor uses pay per event. Apify charges apify-actor-start automatically (one event per GB of configured memory, minimum one); the public 256 MB Task therefore incurs one start event. The Actor emits one result-found only for each complete grounded observation delivered through the paid Dataset write. Error diagnostics, ungrounded responses and work withheld for insufficient buyer budget do not emit result-found.
| Tier | Start | Grounded observation | Discount |
|---|---|---|---|
| FREE | $0.0050 | $0.0400 | 0% |
| BRONZE | $0.00475 | $0.0380 | 5% |
| SILVER | $0.00450 | $0.0360 | 10% |
| GOLD | $0.00425 | $0.0340 | 15% |
| PLATINUM | $0.00410 | $0.0328 | 18% |
| DIAMOND | $0.00400 | $0.0320 | 20% |
At FREE pricing, the four-model public Task costs at most $0.165: $0.005 + (4 × $0.040). A maximum 5-query × 4-model run costs at most $0.805 at the same tier and 256 MB. If the remaining buyer cap cannot cover all requested observations, the Actor starts only the affordable prefix and reports partial_budget; it does not perform knowingly unbillable model work.
The dependency's PPE and platform usage are charged separately to the publisher account and are already part of this product's economics. They are not charged again to the buyer.
API and automation
Run the public Task by ID and wait for completion:
curl -X POST \'https://api.apify.com/v2/actor-tasks/9PfJ2Xy346Mg1cd62/runs?token=APIFY_TOKEN&waitForFinish=300' \-H 'Content-Type: application/json' \--data-binary @input.json
Read defaultDatasetId from the terminal run, then request /v2/datasets/DATASET_ID/items?clean=true. In Make, n8n or another orchestrator, branch on terminal run status first, then branch each row on status; never turn a failed run or error row into a “not mentioned” result.
Data handling and security boundary
Apify stores the original INPUT in the run key-value store, observations in the default Dataset and the run summary in OUTPUT, subject to your account's access and retention settings. Brand names, competitors, questions, market and language are sent to the dependency and its configured model/search providers. Submit public, non-sensitive research prompts only—never credentials, personal data, private strategy or confidential text.
The prompt tells the model to treat retrieved content as data rather than instructions, input fields reject control characters, error text is bounded and known tokens are redacted, and the Actor runs with LIMITED_PERMISSIONS. These controls reduce risk but cannot make third-party web content or model output trustworthy by themselves.
Limits and interpretation
- “Grounded” means the dependency reported web search and at least one structured URL citation. It does not prove that every sentence is supported, current or correct.
- Model answers are stochastic and can change between runs even with identical input. Use repeated runs and timestamps for trend analysis.
- A one-based
positionreflects the model's returned first-mention order, not market share, sales rank, sentiment or recommendation quality. - Citation availability and quality depend on the model, search provider and live web. Open and assess the cited pages before making a decision.
- The Actor does not crawl cited pages independently, fact-check claims, translate sources, infer missing observations, retry failed model calls, or switch to fallback models.
- Model IDs and upstream provider availability can change; a visible free diagnostic is the expected outcome when a fixed model cannot complete safely.
FAQ
Do I need an OpenRouter or model-provider key? No. The publisher-owned dependency handles model access.
Why can a successful run contain an error row? The parent Actor can finish after delivering the models that passed while preserving a free diagnostic for a model that timed out, returned malformed JSON or lacked structured web citations.
Is mentioned: false the same as an error? No. It is meaningful only on a grounded row. An error row means no valid observation was made.
Can I use Chinese or another answer language? Yes. Supply a natural-language name in language; brand matching uses Unicode-aware normalization, but you should inspect aliases and translations that differ from your exact tracked name.
Can I add another model? Not in this version. The four model IDs are fixed so runs stay comparable and costs remain bounded.
Can I schedule it? Yes. Schedule the public Task or your own saved configuration, preserve checkedAt, and compare rows by query and modelId over time.