Tavily Search API Integration
andrewyng/context-hub
Guides building Tavily integrations for web search, URL extraction, site crawling and AI-assisted research in Python or JavaScript agent and RAG projects.
Use Bright Data's Discover API — intent-ranked, AI-relevance-scored web search at scale (not keyword SERP).
$ npx skills add brightdata/skills --skill discover-api -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install brightdata/skills discover-api --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/discover-api .claude/skills/discover-api && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .claude/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/brightdata/skills/tree/main/skills/discover-apiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add brightdata/skills --skill discover-api -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install brightdata/skills discover-api --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/discover-api .agents/skills/discover-api && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .agents/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brightdata/skills --skill discover-api -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install brightdata/skills discover-api --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/discover-api .cursor/skills/discover-api && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .cursor/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/brightdata/skills.git --path skills/discover-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add brightdata/skills --skill discover-api -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install brightdata/skills discover-api --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/discover-api .gemini/skills/discover-api && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .gemini/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install brightdata/skills discover-apiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add brightdata/skills --skill discover-api -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/discover-api .github/skills/discover-api && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .github/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add brightdata/skills --skill discover-api -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install brightdata/skills discover-api --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/brightdata/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/discover-api .opencode/skills/discover-api && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "discover-api" agent skill from https://github.com/brightdata/skills/tree/main/skills/discover-api into .opencode/skills/discover-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "discover-api", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
discover-apiUse Bright Data's Discover API — intent-ranked, AI-relevance-scored web search at scale (not keyword SERP).
Discover API is an agent skill from brightdata/skills. Use Bright Data's Discover API — intent-ranked, AI-relevance-scored web search at scale (not keyword SERP). Trigger a discovery job and retrieve ranked results (link, title, description, relevancescore) with optional parsed page content. Use when the user wants semantic/intent-based web search, "find pages about <topic that match <goal", web-grounded retrieval for an LLM, or results filtered by relevance rather than raw keyword rank. Covers the REST API (POST/GET /discover), the CLI (bdata discover), and the…
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/api-reference.md`).
It sits in Productivity & Automation, covering Web search, Retrieval-augmented generation and REST APIs. It works with Bright Data and Python. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 81f51af. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqcurljustFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.brightdata.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
BRIGHTDATA_API_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Discover API loads about 2.4k tokens when it runs, and up to ~3.9k if it reads all its reference files. Until then it costs about 192 tokens; SKILL.md has 779 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from brightdata/skills at commit 81f51af, republished under its MIT licence (© brightdata). 779 words, ~2,411 tokens.
.claude/skills/discover-api/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Discover is intent-ranked semantic web search. You give it a query plus an
intent, and it returns results scored by AI relevance — optionally with the full
parsed page content. It is the right primitive when result quality/relevance
matters more than raw keyword rank, and the building block for retrieval (RAG),
research, and knowledge-base pipelines.
Discover vs. the neighbors:
search skill (bdata search).data-feeds.live-research or rag-pipeline (both call this API).task_id.task_id until status is "done" (intermediate: "processing").results[].The CLI and SDKs do the trigger+poll for you; the raw REST flow is shown below for
when you need parameters the wrappers don't expose (notably mode).
| You are… | Use |
|---|---|
| In a terminal, one-off or scripted | CLI: bdata discover |
| Writing Node/TS code | JS SDK: client.discover() — see js-sdk-best-practices |
| Writing Python code | Python SDK: client.discover() — see python-sdk-best-practices |
Need mode (deep/fast/zeroRanking) or include_images | Raw REST (wrappers don't expose these yet) |
bdata discoverSetup gate first:
command -v bdata >/dev/null 2>&1 || echo "CLI missing — see bright-data-best-practices/references/cli-setup.md"
bdata zones >/dev/null 2>&1 || echo "not authenticated — run: bdata login"# Intent-ranked discovery, JSON
bdata discover "enterprise LLM platforms" \
--intent "vendor pages with pricing" \
--num-results 15 --json --pretty
# With parsed page content in one pass (for RAG / research)
bdata discover "webhook retry best practices" \
--include-content --num-results 10 -o results.json
# Date-bounded
bdata discover "react server components" \
--start-date 2025-01-01 --end-date 2025-12-31 --num-results 20 --jsonResults live at .results[]; each has title, link, description,
relevance_score, and content when --include-content. Full CLI flag list:
search skill → references/flags.md.
// JS — see js-sdk-best-practices for all options.
// VERIFIED v1.1.0: discover() returns a WRAPPER { success, data:[...], totalResults, cost, taskId, ... }
const res = await client.discover('Tesla battery tech', { intent: 'EV battery breakthroughs', numResults: 10, includeContent: true });
const rows = res.data; // ← rows are in .data (NOT a bare array, NOT .results)# Python — see python-sdk-best-practices (confirm whether rows come back directly, under .data, or .results)
out = client.discover(query="Tesla battery tech", intent="EV battery breakthroughs")mode)# 1) Trigger
task_id=$(curl -s -X POST https://api.brightdata.com/discover \
-H "Authorization: Bearer $BRIGHTDATA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"post-quantum cryptography adoption","intent":"enterprise migration guides","mode":"deep","num_results":20,"include_content":true}' \
| jq -r '.task_id')
# 2) Poll until done
while :; do
resp=$(curl -s "https://api.brightdata.com/discover?task_id=$task_id" -H "Authorization: Bearer $BRIGHTDATA_API_TOKEN")
[ "$(echo "$resp" | jq -r '.status')" = "done" ] && break
sleep 3
done
echo "$resp" | jq '.results'query is required; everything else is optional. The CLI/SDK expose a subset
(see references/api-reference.md for the exact per-surface matrix).
| Param | Type | Default | Notes |
|---|---|---|---|
query | string | — | required, ≤ 1500 chars |
intent | string | — | goal descriptor, ≤ 3000 chars; strongly recommended — drives ranking |
mode | enum | standard | standard | zeroRanking | deep | fast (REST-only) |
num_results | int | — | 1–20; ignored in zeroRanking |
filter_keywords | string[] | — | exact keywords that must appear |
include_content | bool | false | parsed page/PDF content (PDF ≤ 50 MB, 30s); unsupported in zeroRanking |
include_images | bool | false | image array (REST-only) |
format | enum | json | json | md (SDK accepts only json) |
country | string | US | 2-letter ISO |
city | string | — | SERP city targeting |
language | string | en | 31 languages |
start_date / end_date | string | — | YYYY-MM-DD (REST-only) |
remove_duplicates | bool | true | dedupe results (REST-only) |
| Mode | What it does | Use for |
|---|---|---|
standard (default) | balanced depth + AI ranking | general intent search |
deep | exhaustive, broader search; slower | live-research, comprehensive topic coverage |
fast | optimized for low latency | time-sensitive / interactive |
zeroRanking | no AI ranking, max raw volume; ignores num_results, no include_content | bulk corpus collection for rag-pipeline |
modeis currently REST-only — the CLI and SDKs don't expose it. Fordeepcoverage via the CLI/SDK, approximate with a highnum_results+ a sharpintent; for truedeep/zeroRanking, use the raw REST flow above.
REST + CLI (verified) — rows live under results:
{
"status": "done",
"duration_seconds": 12.4,
"timestamp": "2026-06-08T08:36:55.709Z",
"results": [
{ "link": "https://…", "title": "…", "description": "…",
"relevance_score": 0.87, "content": "…(when --include-content)…" }
]
}JS SDK (verified v1.1.0) — rows live under data, inside a wrapper:
{ success: true, data: [ {link, title, description, relevance_score, content?} ],
totalResults, cost, taskId, query, intent, durationSeconds, triggerSentAt, dataFetchedAt }⚠️ Cross-surface gotcha: REST/CLI return rows under .results; the JS SDK
returns them under .data (and wraps everything in {success, ...} — check
success before reading data). Don't assume one shape across surfaces.
relevance_score is a float (snake_case). Higher = more relevant to intent.
content is plain text by default (Markdown when REST format=md). A high
relevance_score does not guarantee good content — pages can be 404 stubs or
nav-only; gate on content length + "not found"/block-page signatures before use.
task_id (REST: status:"ok"). No id → check auth / that Discover is enabled on the account (403 if disabled).status:"done" before reading — never read results while processing.results[] non-empty — if empty, the query/intent is too narrow; loosen and retry. Don't claim success on empty.include_content bodies aren't block pages — grep content for captcha, Just a moment, Access Denied, cf-browser-verification (same list as scrape). Drop poisoned rows.relevance_scores are low or off-topic, sharpen intent (not just query).query with no intent — you lose the whole point (intent ranking). Always give an intent.search.num_results > 20 — capped at 20; for more, run multiple targeted queries and dedup (see live-research).zeroRanking then expecting include_content or num_results to apply — they don't.status:"done".success:false (SDK) / empty results (REST/CLI) as a hard error — it's often transient; retry once with backoff first (see references/api-reference.md → Transient failures).relevance_score or content when a call fails — report the failure instead.references/api-reference.md — full REST endpoint spec, the exact param matrix per surface (REST vs CLI vs JS SDK vs Python SDK), error codes, and limits.live-research — multi-query Discover → dedup → synthesized cited brief.rag-pipeline — Discover (include_content) → chunk → embed → retrieve.search — keyword SERP (bdata search) when you don't need intent ranking.js-sdk-best-practices / python-sdk-best-practices — client.discover() option details.© brightdata, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/discover-api of brightdata/skills.
Open the folder on GitHubat commit 81f51af
Discover API next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Discover API this skillbrightdata/skills | 264 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Tavily Search API Integrationandrewyng/context-hub | 14k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Brightdata Local Searchdavila7/claude-code-templates | 32k | — | ~1.2k | Automated safety check: Notes | MIT | |
| DBoracle/skills | 872 | — | ~1.4k | Automated safety check: Pass | UPL-1.0 | |
| Proxy6VKirill/claude-lane-stack | 122 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Duckduckgo SearchAlexAI-MCP/hermes-CCC | 135 | — | ~1.6k | Automated safety check: Pass | MIT |
andrewyng/context-hub
Guides building Tavily integrations for web search, URL extraction, site crawling and AI-assisted research in Python or JavaScript agent and RAG projects.
davila7/claude-code-templates
Set up and run local web searches using Bright Data SERP API with the unfancy-search pipeline (query expansion, SERP retrieval, RRF reranking).
oracle/skills
Oracle Database guidance for SQL, PL/SQL, SQLcl, ORDS, Oracle Vector SDK, administration, app development, performance, security, migrations, and agent-safe database workflows.
VKirill/claude-lane-stack
[RU: интеграция proxy6.net — покупка/продление прокси, пул, ipauth, scraping] proxy6.net REST API — RU proxy provider for IPv4/IPv4 Shared/IPv6/MTproto.
AlexAI-MCP/hermes-CCC
Free web search via DuckDuckGo - no API key needed. An agent skill from AlexAI-MCP/hermes-CCC.
onism1767-creator/potato
Claude API web-search 可见度(代理测量):用冻结题库反复探测 Claude API(websearch), 以确定性规则统计品牌被提及/被引用的频率与结构,输出带不确定区间、可审计的报告。
brightdata/skills
Replicate the visual style of any website and apply it to your existing codebase.
brightdata/skills
Generate working code that routes HTTP requests through Bright Data proxy networks (Datacenter, ISP, Residential, Mobile) and help users decide which network and IP pool type to use (shared pool…
brightdata/skills
Bright Data MCP handles ALL web data operations. An agent skill from brightdata/skills.
brightdata/skills
Produce a deep, multi-source, cited research brief on a topic from live web data using Bright Data's Discover API (intent-ranked web search + parsed page content).
brightdata/skills
Web data extraction and discovery using the Bright Data JavaScript/TypeScript SDK (@brightdata/sdk).
brightdata/skills
Extract structured data from 40+ supported platforms (Amazon, LinkedIn, Instagram, TikTok, Facebook, YouTube, Reddit, and more) via the Bright Data CLI (bdata pipelines).
Works with
Use Bright Data's Discover API — intent-ranked, AI-relevance-scored web search at scale (not keyword SERP). Discover API is an agent skill from brightdata/skills. Use Bright Data's Discover API — intent-ranked, AI-relevance-scored web search at scale (not keyword SERP).
Discover API fits situations like: A discovery job and retrieve ranked results (link; relevancescore) with optional parsed page content; the user wants semantic/intent-based web search; find pages about <topic that match <goal.
Run `npx skills add brightdata/skills --skill discover-api -a claude-code`. Or copy the skill folder (skills/discover-api in brightdata/skills) into .claude/skills/discover-api in your project. Claude Code loads it when a task matches its description.
Run `npx skills add brightdata/skills --skill discover-api -a codex`. Or copy the skill folder (skills/discover-api in brightdata/skills) into .agents/skills/discover-api in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add brightdata/skills --skill discover-api -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/discover-api, .gemini/skills/discover-api, .github/skills/discover-api and .opencode/skills/discover-api in your project.
Going by SKILL.md and its folder, Discover API needs the command-line tools its instructions call (jq, curl and just) and credentials named BRIGHTDATA_API_TOKEN. Our summary lists: Python 3; A credential in BRIGHTDATA_API_TOKEN.
SKILL.md names 1 domain. In commands or code: api.brightdata.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Discover API is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Discover API: Tavily Search API Integration (andrewyng/context-hub, 14k stars), Brightdata Local Search (davila7/claude-code-templates, 32k stars), DB (oracle/skills, 872 stars) and Proxy6 (VKirill/claude-lane-stack, 122 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
brightdata (a GitHub organization) maintains it in brightdata/skills, which has 264 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 6, 2026.
Source: brightdata/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.