Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Scrape structured data with Bright Data Scraping Browser using Playwright/Puppeteer. Use when scraping JavaScript-rendered pages, SPAs, or sites requiring browser interaction. Trigger with phrases like "brightdata scraping browser", "brightdata playwright", "brightdata puppeteer", "scrape SPA with brightdata", "browser scraping".
.claude/skills/jeremylongshore-brightdata-core-workflow-a/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 78% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 40% | 0% |
| case-18 | ✓→✗ | ▼ Worse | 40% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 36% | 0% |
Treat Browser API as a remote-browser data plane, not an unlimited browsing identity. Bind one browser zone, a public-target manifest, an interaction ceiling, and a minimal output schema before connecting.
Read the task manifest and Grep for login, account creation, purchase, message, or other prohibited interactions. Refuse any nonpublic or abusive workflow.
Build the connect URL with the official client and keep credentials out of logs.
pythonfrom brightdata import BrightDataClient client = BrightDataClient( browser_username=browser_user, browser_password=browser_password, ) # Pass client.browser.get_connect_url() only to Playwright connect_over_cdp.
Allow only the manifest host set, cap navigation and wall time, block unnecessary assets where appropriate, and extract only named public fields. Do not add evasion behavior after a policy denial.
Use Bash(python:) for fixture-backed browser tests. Persist the task ID, target class, field counts, provider errors, and policy decision; discard raw page content unless retention was explicitly approved.
Use Read and Grep to verify the manifest and existing browser adapter. Use Write and Edit for the bounded task, schema, and tests. Use Bash(python:) for offline tests; connecting a live browser still requires the recorded authorization gates.
Use Browser API for an approved public page that requires JavaScript to render a price table. Navigate only to allowlisted hosts, extract the three approved fields, close the browser in finally, and reject any redirect to authentication.
| Failure | Meaning | Response | |---------|---------|----------| | Connection is rejected | Zone credentials, entitlement, or egress is wrong | Verify the owned zone; do not expose the connect URL | | Page redirects to login | The task crossed into nonpublic data | Stop and mark the target out of scope | | Policy error is returned | Product or target is not authorized | Escalate; never add bypass behavior |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 10,398 | 5,712 | -45% | 1 | 1 | 0% | 1,899 | 2,591 | +36% | 0 | 0 | — |
case-02 | pass→pass | 6,735 | 2,726 | -60% | 1 | 1 | 0% | 1,248 | 1,990 | +59% | 0 | 0 | — |
case-03 | pass→pass | 14,359 | 4,259 | -70% | 1 | 1 | 0% | 785 | 2,301 | +193% | 0 | 0 | — |
case-04 | pass→pass | 3,213 | 3,582 | +11% | 1 | 1 | 0% | 604 | 2,155 | +257% | 0 | 0 | — |
case-05 | pass→fail | 11,309 | 8,257 | -27% | 1 | 1 | 0% | 2,011 | 2,822 | +40% | 0 | 0 | — |
case-06 | fail→pass | 12,857 | 11,994 | -7% | 1 | 1 | 0% | 2,107 | 3,756 | +78% | 0 | 0 | — |
case-07 | pass→pass | 16,072 | 13,144 | -18% | 1 | 1 | 0% | 2,630 | 3,830 | +46% | 0 | 0 | — |
case-08 | fail→pass | 12,716 | 7,145 | -44% | 1 | 1 | 0% | 2,265 | 2,777 | +23% | 0 | 0 | — |
case-09 | pass→pass | 8,650 | 5,573 | -36% | 1 | 1 | 0% | 1,624 | 2,449 | +51% | 0 | 0 | — |
case-10 | pass→pass | 9,798 | 6,344 | -35% | 1 | 1 | 0% | 1,743 | 2,689 | +54% | 0 | 0 | — |
case-11 | pass→pass | 7,648 | 5,365 | -30% | 1 | 1 | 0% | 1,302 | 2,452 | +88% | 0 | 0 | — |
case-12 | pass→pass | 6,510 | 1,748 | -73% | 1 | 1 | 0% | 1,043 | 1,731 | +66% | 0 | 0 | — |
case-22 | pass→pass | 13,464 | 14,370 | +7% | 1 | 1 | 0% | 2,318 | 4,157 | +79% | 0 | 0 | — |
case-13 | pass→pass | 3,621 | 3,597 | -1% | 1 | 1 | 0% | 632 | 1,980 | +213% | 0 | 0 | — |
case-14 | pass→pass | 12,562 | 10,467 | -17% | 1 | 1 | 0% | 2,019 | 3,172 | +57% | 0 | 0 | — |
case-15 | pass→pass | 12,095 | 10,779 | -11% | 1 | 1 | 0% | 2,105 | 3,491 | +66% | 0 | 0 | — |
case-16 | pass→pass | 15,239 | 8,524 | -44% | 1 | 1 | 0% | 1,723 | 2,982 | +73% | 0 | 0 | — |
case-17 | pass→pass | 10,024 | 6,308 | -37% | 1 | 1 | 0% | 1,769 | 2,601 | +47% | 0 | 0 | — |
case-18 | pass→fail | 10,963 | 7,355 | -33% | 1 | 1 | 0% | 1,973 | 2,769 | +40% | 0 | 0 | — |
case-19 | fail→fail | 24,452 | 7,165 | -71% | 1 | 1 | 0% | 2,210 | 2,675 | +21% | 0 | 0 | — |
case-20 | fail→fail | 21,818 | 15,679 | -28% | 1 | 1 | 0% | 4,044 | 4,471 | +11% | 0 | 0 | — |
case-21 | pass→pass | 9,444 | 9,233 | -2% | 1 | 1 | 0% | 1,819 | 3,408 | +87% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.