agent-onboarding
The entry point to all Bright Data skills - start here, and it guides the agent to the right skill for the task at hand - web…
Scrape Instagram profiles, posts, reels and comments as JSON through the Bright Data Scraper API. Use when the user asks for any Instagram data - an account's followers or bio, a post's likes and comments, the recent posts or reels of an account, the comments on a post - or says
Claude Code
$ npx -y skills add brightdata/skills --skill instagram --agent claude-code
Codex
$ npx skills add brightdata/skills --skill instagram -a codex -y
Cursor
$ npx skills add brightdata/skills --skill instagram -a cursor -y
Gemini CLI
$ npx skills add brightdata/skills --skill instagram -a gemini-cli -y
GitHub Copilot
$ npx skills add brightdata/skills --skill instagram -a github-copilot -y
OpenCode
$ npx skills add brightdata/skills --skill instagram -a opencode -y
Windsurf
$ npx skills add brightdata/skills --skill instagram -a windsurf -y
name: instagram description: Scrape Instagram profiles, posts, reels and comments as JSON through the Bright Data Scraper API. Use when the user asks for any Instagram data - an account's followers or bio, a post's likes and comments, the recent posts or reels of an account, the comments on a post - or says "instagram scraper", "instagram api", "instagram data". Routes between the CLI (`bdata pipelines run` with the Instagram dataset ids), the Python SDK (`client.search.instagram.*` and `client.scrape.instagram.*`), and the MCP scraper tools. Carries the credit costs, the reels timeout, the `post_type` values that work, and the error-row cases the API returns as success.
Four datasets: profiles, posts, reels, comments. Three routes into them. Pick by what the user has and wants. The SDK lines were verified on 2026-09-11 against `brightdata-sdk` 2.5.2; the CLI and MCP lines follow `@brightdata/cli` 0.4.1 and `@brightdata/mcp` 4.1.0.
| Dataset | dataset_id | Methods | |---|---|---| | Profiles | `gd_l1vikfch901nx3by4` | `collect_by_url`, `discover_by_user_name` | | Posts | `gd_lk5ns7kz21pck8jpis` | `collect_by_url`, `discover_by_url` (a profile URL: its recent posts) | | Reels | `gd_lyclm20il4r5helnj` | `collect_by_url`, `discover_by_url`, `discover_by_url_all_reels` | | Comments | `gd_ltppn085pokosxh13` | `collect_by_url` |
| You have | You want | Route | |---|---|---| | a profile URL | the account's recent posts | CLI `bdata pipelines run gd_lk5ns7kz21pck8jpis discover_by_url <url> --num_of_posts N` or SDK `client.search.instagram.posts(url, num_of_posts=N)`. `collect_by_url` with a profile URL returns `It is not a post URL` | | a profile URL | the account's recent reels | CLI `bdata pipelines run gd_lyclm20il4r5helnj discover_by_url <url> --num_of_posts N` or SDK `client.search.instagram.reels(url, num_of_posts=N, timeout=420)` | | a profile URL | the profile | CLI `bdata pipelines run gd_l1vikfch901nx3by4 collect_by_url <url>` or SDK `client.scrape.instagram.profiles(url)` | | a username, no URL | the profile | CLI `bdata pipelines run gd_l1vikfch901nx3by4 discover_by_user_name --user_name nasa` or SDK `client.search.instagram.profiles("nasa")` | | a post URL | that post | CLI `bdata pipelines run gd_lk5ns7kz21pck8jpis collect_by_url <url>` or SDK `client.scrape.instagram.posts(url)` | | a reel URL | that reel | CLI `bdata pipelines run gd_lyclm20il4r5helnj collect_by_url <url>` or SDK `client.scrape.instagram.reels(url)` | | a post or reel URL | its comments | CLI `bdata pipelines run gd_ltppn085pokosxh13 collect_by_url <url>` or SDK `client.scrape.instagram.comments(url)`. One credit per comment | | no terminal (hosted assistant) | any of the above | MCP `run_scraper` with the dataset id and method above (see MCP below) |
Every route is an asynchronous job on the API: trigger, poll, return. Expect one to three minutes per call. One credit per record; 5,000 credits are free each month. Always pass `num_of_posts` on a discovery call: without it the number of posts collected, and billed, has no limit.
Run `node <agent-onboarding skill folder>/scripts/check-auth.mjs --for instagram`. Exit `0` means ready. Any other exit, a missing CLI, or a missing login is the `agent-onboarding` skill's job. These datasets need no zone, only the key.
For the SDK route: `pip install brightdata-sdk`. The SDK reads the token from `BRIGHTDATA_API_TOKEN` or `BRIGHTDATA_API_KEY`, then from a `.env` file found by searching upward from its own install folder, then from the CLI's stored login. After `bdata login` nothing else is needed.
bdata pipelines run gd_l1vikfch901nx3by4 collect_by_url "https://www.instagram.com/nasa/" --pretty bdata pipelines run gd_lk5ns7kz21pck8jpis collect_by_url "https://www.instagram.com/p/Dc1W1uFj-CW/" --format csv -o posts.csv bdata pipelines run gd_lyclm20il4r5helnj collect_by_url "https://www.instagram.com/reel/DcMXl1IPNtB/" --pretty bdata pipelines run gd_ltppn085pokosxh13 collect_by_url "https://www.instagram.com/p/Dc1W1uFj-CW/" --pretty bdata pipelines run gd_lk5ns7kz21pck8jpis discover_by_url "https://www.instagram.com/nasa/" --num_of_posts 5 --pretty
`bdata pipelines info <dataset_id> <method>` lists a method's input fields; each one is a `--<field> <value>` flag. `--format json|csv|ndjson|jsonl`, `-o FILE`, `--timeout SECONDS` (default 600). Typical times: profile 50s, post 40s, reel 25s, comments 10s.
from brightdata import SyncBrightDataClient
with SyncBrightDataClient(auto_create_zones=False) as client:
result = client.search.instagram.posts("https://www.instagram.com/nasa/", num_of_posts=5)
for post in result.data:
print(post["likes"], post["num_comments"], post["url"])Rules that are not in the SDK docstrings:
Web Unlocker and SERP zones on entry, which Instagram never uses and which fails with a 403 on accounts without a payment method (sdk-python#57).
`scrape.*` calls with one URL return one record as a dict, several as a list.
`MM-DD-YYYY`. `post_type="Post"` keeps posts only, `post_type="Reels"` keeps reels only. The docstring's `"Reel"` returns an error row and no reels (sdk-python#59).
`error` contains `There are no public posts in the profile for the specified period`. Match the message; a dead account uses the same `error_code`.
The entry point to all Bright Data skills - start here, and it guides the agent to the right skill for the task at hand - web…
Use when the question is about money on a Bright Data account: current balance, credit left, what was charged, spend or cost…
Runs Bright Data jobs from a terminal with the bdata CLI, the published npm package @brightdata/cli. Use when the agent itself…
Bright Data's MCP server, the tool layer that gives an LLM agent live web access with no shell. Use when wiring Bright Data tools…
Bright Data's Python and Node.js SDKs for calling Web Scraper API, SERP, Web Unlocker and Scraper Studio from application code.…
Use when the user already has browser automation and wants it unblocked or run in the cloud: Playwright, Puppeteer, Selenium or…
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…