Bright Data — Search
Find things on the web. Two commands live in this skill:
bdata search— classic keyword SERP (Google/Bing/Yandex). Best when you want "what ranks for keyword X."bdata discover— AI intent-ranked discovery with optional page content. Best when you want "pages about topic Y that match intent Z."
For structured data from a known platform (Amazon, LinkedIn, TikTok, …), stop and use data-feeds instead.
Setup gate (run first)
Halt and route to skills/bright-data-best-practices/references/cli-setup.md if either check fails.
Pick your path
Action
Core commands:
Full flag reference: references/flags.md [blocked].
search vs discover — pick the right one
Verification gate
- JSON parses cleanly:
jq . <output>returns 0. - Result array non-empty — if empty, the query is legitimately zero-result; relax the query and re-run. Don't claim success on empty results without telling the user.
- Required fields present:
search: results live at.organic[]; each hastitle+linkdiscover: results live at.results[]; each hastitle+link; if--include-content, alsocontent
- For
discover --include-content: no block-page signatures in thecontentfield (same list as scrape, case-insensitive):Access DeniedJust a momentAttention RequiredChecking your browsercaptchacf-browser-verificationcloudflare(with < 2KB total body)
- Geo sanity: if the user expected country-specific results, inspect TLDs / languages of top results. If mis-localized, re-run with explicit
--countryand--language.
Red flags
- Using
searchto fetch content from Amazon, LinkedIn, TikTok, etc. whendata-feedsreturns clean structured data in one call. - Scraping every SERP result blindly — filter first (domain allowlist, keyword in title, relevance heuristic).
- Confusing
search(keyword) withdiscover(semantic). They answer different questions. - Running multiple queries without deduping URLs across result sets before scraping.
- Assuming SERP order is universal — it's personalized by geo + device. Always set
--countryand--deviceexplicitly for reproducibility. - Using
--pageas a result count — it's a page index, not a limit. Each page returns ~10 results. - Assuming SERP results are at
.results[]— forbdata searchthey live at.organic[]. (Discover uses.results[].) - Hardcoding
--num-results 100ondiscoverwithout realizing the pipeline polls until that many are found; can be slow.
References
references/flags.md[blocked] — full flags forsearchanddiscoverwith when-to-use notes.references/patterns.md[blocked] — multi-query dedup, SERP → filter → scrape pipeline,searchvsdiscoverdecision, legacycurlfallback, shared verification checklist.references/examples.md[blocked] — (1) single Google query, (2) localized Bing, (3) batch queries + dedup into URL list, (4)discover --include-contentend-to-end.


