New: Earn 20% as an AgentAlley affiliate. Share your link and earn on every sale you refer. Join now New: Earn 20% as an affiliate. Join now

Scrape websites, extract structured data

Scrape — General-Purpose Web Scraping & Data Extraction

by gooseworks-ai · MIT license · ★ 1,220 on GitHub · updated Sep 21

Scrape — General-Purpose Web Scraping & Data Extraction cover

Scrape websites, extract structured data, and automate browsers. Use when asked to scrape, extract, crawl, parse, or pull data from web pages or any URL.

---
name: web-scraping
description: Scrape websites, extract structured data, and automate browsers. Use when asked to scrape, extract, crawl, parse, or pull data from web pages or any URL.
source: orthogonal
---


# Scrape — General-Purpose Web Scraping & Data Extraction

## Setup

Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```

If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`

Overview

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

Manual install (npx, ZIP)
Claude Codenpx skills add gooseworks-ai/goose-skills --skill web-scraping -g -a claude-code
Claude Code (manual)mkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \ | tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/research-tools/capabilities/web-scraping
Windows (PowerShell)New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/d1396c4d1823ac3cc892/web-scraping.zip" -OutFile "$env:TEMP\web-scraping.zip"; Expand-Archive "$env:TEMP\web-scraping.zip" -DestinationPath "$HOME\.claude\skills" -Force
Claude.ai / desktopDownload the ZIP and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md18.0 KB
  • skill.meta.json279 B
Read the files here
gooseworks-ai/615c6852 files
SKILL.md
Show the full text442 lines

Scrape — General-Purpose Web Scraping & Data Extraction

Setup

Read your credentials from ~/.gooseworks/credentials.json:

export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Scrape websites, extract structured data, and automate browser interactions. Pick the best API for the task — or combine several for comprehensive extraction.

1. Scrapegraph — AI-Powered Scraping with Natural Language

Best for: Extracting data using plain English prompts, converting pages to markdown, crawling with AI extraction, and search-based scraping.

AI-powered extraction (describe what you want in natural language):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
  "website_url": "https://example.com/products",
  "user_prompt": "Extract all product names, prices, descriptions, and image URLs"
}'

With output schema (enforce structure):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
  "website_url": "https://example.com/products",
  "user_prompt": "Extract all products",
  "output_schema": {
    "properties": {
      "products": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "name": {"type": "string"},
            "price": {"type": "number"},
            "description": {"type": "string"}
          }
        }
      }
    }
  }
}'

Search + scrape (search the web and extract from results):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/searchscraper","body":{"user_prompt":"Find the latest iPhone prices from major retailers"}}'
# Poll for results:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/searchscraper/{request_id}"}'

Convert page to markdown:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/markdownify","body":{"website_url":"https://example.com/article"}}'

Crawl with AI extraction:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/crawl"}'
  "url": "https://docs.example.com",
  "prompt": "Extract all API endpoints and their descriptions",
  "max_pages": 20
}'
# Poll for results:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/crawl/{task_id}"}'

Raw HTML scrape:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/scrape","body":{"website_url":"https://example.com"}}'

Get sitemap:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/sitemap","body":{"website_url":"https://example.com"}}'

Key parameters: stealth (bypass bot protection, +4 credits), total_pages (paginate up to 100), number_of_scrolls (infinite scroll pages), render_heavy_js (React/Vue/Angular SPAs), steps (interaction steps before extraction).

2. Olostep — Scalable Scraping & Batch Jobs

Best for: High-volume scraping, batch processing, site crawling, URL discovery, and AI-powered answers from pages.

Scrape a single page:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/scrapes","body":{"url_to_scrape":"https://example.com/page"}}'

AI-powered answer from the web:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/answers","body":{"task":"What is the pricing for Stripe?"}}'

Discover all URLs on a site:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/maps","body":{"url":"https://example.com","search_query":"pricing"}}'

Crawl a site (async):

# Step 1: Start crawl
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/crawls"}'
  "start_url": "https://docs.example.com",
  "max_pages": 100,
  "include_urls": ["/docs/**"]
}'
# Step 2: Check status
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/crawls/{crawl_id}"}'
# Step 3: Get pages
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/crawls/{crawl_id}/pages"}'
# Step 4: Retrieve content
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/retrieve","body":{"retrieve_id":"RETRIEVE_ID"}}'

Batch scrape (process many URLs at once):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/batches"}'
  "items": [
    {"url_to_scrape": "https://example.com/page1"},
    {"url_to_scrape": "https://example.com/page2"},
    {"url_to_scrape": "https://example.com/page3"}
  ]
}'
# Check status:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/batches/{batch_id}"}'
# Get items:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"olostep","path":"/v1/batches/{batch_id}/items"}'

Key parameters: formats (markdown/html/text), country (US, CA, IT, IN, GB, JP, etc.), actions (page interactions before scraping), wait_before_scraping, remove_css_selectors, llm_extract.

3. Riveter — Structured Extraction with Defined Schemas

Best for: Extracting data into a consistent, predefined structure. Define input URLs and output fields with prompts.

Simple page scrape:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/scrape","body":{"url":"https://example.com/article"}}'

Structured extraction (define your output schema):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run"}'
  "input": {
    "urls": ["https://example.com/products"]
  },
  "output": {
    "name": {"prompt": "Product name", "contexts": ["urls"]},
    "price": {"prompt": "Product price", "contexts": ["urls"], "format": "number"},
    "description": {"prompt": "Product description", "contexts": ["urls"]}
  }
}'
# Check status:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run_status","query":{"run_key":"RUN_KEY"}}'
# Get data:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run_data","query":{"run_key":"RUN_KEY"}}'

Multi-URL extraction with tools:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"riveter","path":"/v1/run"}'
  "input": {
    "company_urls": ["https://stripe.com", "https://vercel.com"]
  },
  "output": {
    "company_name": {"prompt": "Company name", "contexts": ["company_urls"]},
    "pricing_url": {"prompt": "URL to pricing page", "contexts": ["company_urls"], "format": "url"},
    "pricing_details": {"prompt": "Pricing tiers and costs", "contexts": ["pricing_url"], "tools": ["web_scrape"]}
  }
}'

Key parameters: Output format options (number/json/url/text/email/tag/date/boolean), tools (web_search/web_scrape/query_pdf/query_image), max_tool_calls (0-10), run_when (always/any_filled/all_filled).

4. Brand.dev — Brand Assets, Logos & Company Data

Best for: Extracting brand logos, colors, fonts, design systems, screenshots, and AI-powered data extraction from company websites.

Get full brand data:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"stripe.com"}}'

By company name / email / ticker:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-name","query":{"name":"Stripe"}}'
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-email","query":{"email":"[email protected]"}}'
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-ticker","query":{"ticker":"AAPL"}}'

Extract design system / styleguide:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/styleguide","query":{"domain":"linear.app"}}'

Extract fonts:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/fonts","query":{"domain":"vercel.com"}}'

Take website screenshot:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/screenshot","query":{"domain":"github.com","fullScreenshot":"true"}}'

AI-powered data extraction:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/ai/query"}'
  "domain": "anthropic.com",
  "data_to_extract": [{"name": "products", "description": "What products does this company offer?"}]
}'

Extract products:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"brand-dev","path":"/v1/brand/ai/products","body":{"domain":"stripe.com"}}'

5. Notte — Browser Automation & Page Interaction

Best for: Scraping pages that require browser interaction, CAPTCHAs, login flows, or complex JavaScript rendering. Also supports autonomous AI agents for multi-step browser tasks.

Quick scrape (no session needed):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/scrape","body":{"url":"https://example.com"}}'

Session-based scraping (for complex interactions):

# Step 1: Start a browser session
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/start","body":{"url":"https://example.com","proxies":true,"solve_captchas":true}}'

# Step 2: Observe available actions
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/{session_id}/page/observe","body":{"instruction":"Find the search box"}}'

# Step 3: Execute actions
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/{session_id}/page/execute","body":{"instruction":"Click the search button"}}'

# Step 4: Scrape the page
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/{session_id}/page/scrape","body":{"only_main_content":true}}'

# Step 5: Stop session
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/{session_id}/stop"}'

AI agent (autonomous multi-step browser task):

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/agents/start"}'
  "task": "Go to Google, search for AI news, and summarize the top 5 results",
  "url": "https://google.com",
  "max_steps": 20
}'
# Check status:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/agents/{agent_id}"}'

Take screenshot:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{"full_page":true}}'

Key parameters: proxies (rotate proxies), solve_captchas (auto-solve), headless (default true), browser_type (chromium/chrome/firefox), viewport_width/viewport_height.

Tips

  • Simple page scrape: Start with Olostep for raw content or Scrapegraph SmartScraper for AI-extracted data
  • Natural language extraction: Scrapegraph is the go-to — describe what you want in English, optionally pass an output_schema
  • Structured/schema-based extraction: Riveter lets you define exact fields and formats for consistent output
  • Brand assets & logos: Brand.dev for logos, colors, fonts, design systems, and screenshots
  • Bot protection: Use Scrapegraph's stealth: true or Notte's proxies: true + solve_captchas: true
  • JavaScript-heavy SPAs: Use Scrapegraph's render_heavy_js: true or Notte browser sessions
  • Batch/bulk scraping: Olostep batches for processing many URLs at once with constant processing time
  • Async crawls: Olostep and Scrapegraph crawls are async — start with POST, poll for results
  • Page interactions: Use Scrapegraph steps for simple interactions before extraction, or Notte sessions for complex multi-step flows
  • Pagination: Scrapegraph's total_pages (up to 100) handles multi-page extraction automatically
  • Convert to markdown: Scrapegraph /v1/markdownify for clean markdown from any page
  • Combine APIs: For maximum data, use Scrapegraph for AI extraction + Riveter for structured validation + Olostep for raw content

Discover More

List all endpoints for any API, or add a path for parameter details:

curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"scrapegraph API endpoints"}' api show olostep
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"riveter API endpoints"}' api show brand-dev
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"notte API endpoints"}'

Example: `curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"scrapegraph","path":"/v1/smartscraper`"}' for full parameter details.
1---
2name: web-scraping
3description: Scrape websites, extract structured data, and automate browsers. Use when asked to scrape, extract, crawl, parse, or pull data from web pages or any URL.
4source: orthogonal
5---
6 
7 
8# Scrape — General-Purpose Web Scraping & Data Extraction
9 
10## Setup
11 
12Read your credentials from ~/.gooseworks/credentials.json:
13```bash
14export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
15export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
16```
17 
18If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`
19 
20All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"`
21 
22 
23Scrape websites, extract structured data, and automate browser interactions. Pick the best API for the task — or combine several for comprehensive extraction.
24 
25## 1. Scrapegraph — AI-Powered Scraping with Natural Language
26 
27Best for: Extracting data using plain English prompts, converting pages to markdown, crawling with AI extraction, and search-based scraping.
28 
29**AI-powered extraction** (describe what you want in natural language):
30```bash
31curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
32 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
33 -H "Content-Type: application/json" \
34 -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
35 "website_url": "https://example.com/products",
36 "user_prompt": "Extract all product names, prices, descriptions, and image URLs"
37}'
38```
39 
40**With output schema** (enforce structure):
41```bash
42curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
43 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
44 -H "Content-Type: application/json" \
45 -d '{"api":"scrapegraph","path":"/v1/smartscraper"}'
46 "website_url": "https://example.com/products",
47 "user_prompt": "Extract all products",
48 "output_schema": {
49 "properties": {
50 "products": {
51 "type": "array",
52 "items": {
53 "type": "object",
54 "properties": {
55 "name": {"type": "string"},
56 "price": {"type": "number"},
57 "description": {"type": "string"}
58 }
59 }
60 }
61 }
62 }
63}'
64```
65 
66**Search + scrape** (search the web and extract from results):
67```bash
68curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
69 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
70 -H "Content-Type: application/json" \
71 -d '{"api":"scrapegraph","path":"/v1/searchscraper","body":{"user_prompt":"Find the latest iPhone prices from major retailers"}}'
72# Poll for results:
73curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
74 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
75 -H "Content-Type: application/json" \
76 -d '{"api":"scrapegraph","path":"/v1/searchscraper/{request_id}"}'
77```
78 
79**Convert page to markdown:**
80```bash
81curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
82 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
83 -H "Content-Type: application/json" \
84 -d '{"api":"scrapegraph","path":"/v1/markdownify","body":{"website_url":"https://example.com/article"}}'
85```
86 
87**Crawl with AI extraction:**
88```bash
89curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
90 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
91 -H "Content-Type: application/json" \
92 -d '{"api":"scrapegraph","path":"/v1/crawl"}'
93 "url": "https://docs.example.com",
94 "prompt": "Extract all API endpoints and their descriptions",
95 "max_pages": 20
96}'
97# Poll for results:
98curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
99 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
100 -H "Content-Type: application/json" \
101 -d '{"api":"scrapegraph","path":"/v1/crawl/{task_id}"}'
102```
103 
104**Raw HTML scrape:**
105```bash
106curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
107 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
108 -H "Content-Type: application/json" \
109 -d '{"api":"scrapegraph","path":"/v1/scrape","body":{"website_url":"https://example.com"}}'
110```
111 
112**Get sitemap:**
113```bash
114curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
115 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
116 -H "Content-Type: application/json" \
117 -d '{"api":"scrapegraph","path":"/v1/sitemap","body":{"website_url":"https://example.com"}}'
118```
119 
120Key parameters: `stealth` (bypass bot protection, +4 credits), `total_pages` (paginate up to 100), `number_of_scrolls` (infinite scroll pages), `render_heavy_js` (React/Vue/Angular SPAs), `steps` (interaction steps before extraction).
121 
122## 2. Olostep — Scalable Scraping & Batch Jobs
123 
124Best for: High-volume scraping, batch processing, site crawling, URL discovery, and AI-powered answers from pages.
125 
126**Scrape a single page:**
127```bash
128curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
129 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
130 -H "Content-Type: application/json" \
131 -d '{"api":"olostep","path":"/v1/scrapes","body":{"url_to_scrape":"https://example.com/page"}}'
132```
133 
134**AI-powered answer from the web:**
135```bash
136curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
137 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
138 -H "Content-Type: application/json" \
139 -d '{"api":"olostep","path":"/v1/answers","body":{"task":"What is the pricing for Stripe?"}}'
140```
141 
142**Discover all URLs on a site:**
143```bash
144curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
145 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
146 -H "Content-Type: application/json" \
147 -d '{"api":"olostep","path":"/v1/maps","body":{"url":"https://example.com","search_query":"pricing"}}'
148```
149 
150**Crawl a site** (async):
151```bash
152# Step 1: Start crawl
153curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
154 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
155 -H "Content-Type: application/json" \
156 -d '{"api":"olostep","path":"/v1/crawls"}'
157 "start_url": "https://docs.example.com",
158 "max_pages": 100,
159 "include_urls": ["/docs/**"]
160}'
161# Step 2: Check status
162curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
163 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
164 -H "Content-Type: application/json" \
165 -d '{"api":"olostep","path":"/v1/crawls/{crawl_id}"}'
166# Step 3: Get pages
167curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
168 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
169 -H "Content-Type: application/json" \
170 -d '{"api":"olostep","path":"/v1/crawls/{crawl_id}/pages"}'
171# Step 4: Retrieve content
172curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
173 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
174 -H "Content-Type: application/json" \
175 -d '{"api":"olostep","path":"/v1/retrieve","body":{"retrieve_id":"RETRIEVE_ID"}}'
176```
177 
178**Batch scrape** (process many URLs at once):
179```bash
180curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
181 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
182 -H "Content-Type: application/json" \
183 -d '{"api":"olostep","path":"/v1/batches"}'
184 "items": [
185 {"url_to_scrape": "https://example.com/page1"},
186 {"url_to_scrape": "https://example.com/page2"},
187 {"url_to_scrape": "https://example.com/page3"}
188 ]
189}'
190# Check status:
191curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
192 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
193 -H "Content-Type: application/json" \
194 -d '{"api":"olostep","path":"/v1/batches/{batch_id}"}'
195# Get items:
196curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
197 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
198 -H "Content-Type: application/json" \
199 -d '{"api":"olostep","path":"/v1/batches/{batch_id}/items"}'
200```
201 
202Key parameters: `formats` (markdown/html/text), `country` (US, CA, IT, IN, GB, JP, etc.), `actions` (page interactions before scraping), `wait_before_scraping`, `remove_css_selectors`, `llm_extract`.
203 
204## 3. Riveter — Structured Extraction with Defined Schemas
205 
206Best for: Extracting data into a consistent, predefined structure. Define input URLs and output fields with prompts.
207 
208**Simple page scrape:**
209```bash
210curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
211 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
212 -H "Content-Type: application/json" \
213 -d '{"api":"riveter","path":"/v1/scrape","body":{"url":"https://example.com/article"}}'
214```
215 
216**Structured extraction** (define your output schema):
217```bash
218curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
219 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
220 -H "Content-Type: application/json" \
221 -d '{"api":"riveter","path":"/v1/run"}'
222 "input": {
223 "urls": ["https://example.com/products"]
224 },
225 "output": {
226 "name": {"prompt": "Product name", "contexts": ["urls"]},
227 "price": {"prompt": "Product price", "contexts": ["urls"], "format": "number"},
228 "description": {"prompt": "Product description", "contexts": ["urls"]}
229 }
230}'
231# Check status:
232curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
233 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
234 -H "Content-Type: application/json" \
235 -d '{"api":"riveter","path":"/v1/run_status","query":{"run_key":"RUN_KEY"}}'
236# Get data:
237curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
238 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
239 -H "Content-Type: application/json" \
240 -d '{"api":"riveter","path":"/v1/run_data","query":{"run_key":"RUN_KEY"}}'
241```
242 
243**Multi-URL extraction with tools:**
244```bash
245curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
246 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
247 -H "Content-Type: application/json" \
248 -d '{"api":"riveter","path":"/v1/run"}'
249 "input": {
250 "company_urls": ["https://stripe.com", "https://vercel.com"]
251 },
252 "output": {
253 "company_name": {"prompt": "Company name", "contexts": ["company_urls"]},
254 "pricing_url": {"prompt": "URL to pricing page", "contexts": ["company_urls"], "format": "url"},
255 "pricing_details": {"prompt": "Pricing tiers and costs", "contexts": ["pricing_url"], "tools": ["web_scrape"]}
256 }
257}'
258```
259 
260Key parameters: Output `format` options (number/json/url/text/email/tag/date/boolean), `tools` (web_search/web_scrape/query_pdf/query_image), `max_tool_calls` (0-10), `run_when` (always/any_filled/all_filled).
261 
262## 4. Brand.dev — Brand Assets, Logos & Company Data
263 
264Best for: Extracting brand logos, colors, fonts, design systems, screenshots, and AI-powered data extraction from company websites.
265 
266**Get full brand data:**
267```bash
268curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
269 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
270 -H "Content-Type: application/json" \
271 -d '{"api":"brand-dev","path":"/v1/brand/retrieve","query":{"domain":"stripe.com"}}'
272```
273 
274**By company name / email / ticker:**
275```bash
276curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
277 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
278 -H "Content-Type: application/json" \
279 -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-name","query":{"name":"Stripe"}}'
280curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
281 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
282 -H "Content-Type: application/json" \
283 -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-email","query":{"email":"[email protected]"}}'
284curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
285 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
286 -H "Content-Type: application/json" \
287 -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-ticker","query":{"ticker":"AAPL"}}'
288```
289 
290**Extract design system / styleguide:**
291```bash
292curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
293 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
294 -H "Content-Type: application/json" \
295 -d '{"api":"brand-dev","path":"/v1/brand/styleguide","query":{"domain":"linear.app"}}'
296```
297 
298**Extract fonts:**
299```bash
300curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
301 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
302 -H "Content-Type: application/json" \
303 -d '{"api":"brand-dev","path":"/v1/brand/fonts","query":{"domain":"vercel.com"}}'
304```
305 
306**Take website screenshot:**
307```bash
308curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
309 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
310 -H "Content-Type: application/json" \
311 -d '{"api":"brand-dev","path":"/v1/brand/screenshot","query":{"domain":"github.com","fullScreenshot":"true"}}'
312```
313 
314**AI-powered data extraction:**
315```bash
316curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
317 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
318 -H "Content-Type: application/json" \
319 -d '{"api":"brand-dev","path":"/v1/brand/ai/query"}'
320 "domain": "anthropic.com",
321 "data_to_extract": [{"name": "products", "description": "What products does this company offer?"}]
322}'
323```
324 
325**Extract products:**
326```bash
327curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
328 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
329 -H "Content-Type: application/json" \
330 -d '{"api":"brand-dev","path":"/v1/brand/ai/products","body":{"domain":"stripe.com"}}'
331```
332 
333## 5. Notte — Browser Automation & Page Interaction
334 
335Best for: Scraping pages that require browser interaction, CAPTCHAs, login flows, or complex JavaScript rendering. Also supports autonomous AI agents for multi-step browser tasks.
336 
337**Quick scrape** (no session needed):
338```bash
339curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
340 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
341 -H "Content-Type: application/json" \
342 -d '{"api":"notte","path":"/scrape","body":{"url":"https://example.com"}}'
343```
344 
345**Session-based scraping** (for complex interactions):
346```bash
347# Step 1: Start a browser session
348curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
349 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
350 -H "Content-Type: application/json" \
351 -d '{"api":"notte","path":"/sessions/start","body":{"url":"https://example.com","proxies":true,"solve_captchas":true}}'
352 
353# Step 2: Observe available actions
354curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
355 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
356 -H "Content-Type: application/json" \
357 -d '{"api":"notte","path":"/sessions/{session_id}/page/observe","body":{"instruction":"Find the search box"}}'
358 
359# Step 3: Execute actions
360curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
361 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
362 -H "Content-Type: application/json" \
363 -d '{"api":"notte","path":"/sessions/{session_id}/page/execute","body":{"instruction":"Click the search button"}}'
364 
365# Step 4: Scrape the page
366curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
367 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
368 -H "Content-Type: application/json" \
369 -d '{"api":"notte","path":"/sessions/{session_id}/page/scrape","body":{"only_main_content":true}}'
370 
371# Step 5: Stop session
372curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
373 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
374 -H "Content-Type: application/json" \
375 -d '{"api":"notte","path":"/sessions/{session_id}/stop"}'
376```
377 
378**AI agent** (autonomous multi-step browser task):
379```bash
380curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
381 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
382 -H "Content-Type: application/json" \
383 -d '{"api":"notte","path":"/agents/start"}'
384 "task": "Go to Google, search for AI news, and summarize the top 5 results",
385 "url": "https://google.com",
386 "max_steps": 20
387}'
388# Check status:
389curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
390 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
391 -H "Content-Type: application/json" \
392 -d '{"api":"notte","path":"/agents/{agent_id}"}'
393```
394 
395**Take screenshot:**
396```bash
397curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
398 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
399 -H "Content-Type: application/json" \
400 -d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{"full_page":true}}'
401```
402 
403Key parameters: `proxies` (rotate proxies), `solve_captchas` (auto-solve), `headless` (default true), `browser_type` (chromium/chrome/firefox), `viewport_width`/`viewport_height`.
404 
405## Tips
406 
407- **Simple page scrape**: Start with Olostep for raw content or Scrapegraph SmartScraper for AI-extracted data
408- **Natural language extraction**: Scrapegraph is the go-to — describe what you want in English, optionally pass an `output_schema`
409- **Structured/schema-based extraction**: Riveter lets you define exact fields and formats for consistent output
410- **Brand assets & logos**: Brand.dev for logos, colors, fonts, design systems, and screenshots
411- **Bot protection**: Use Scrapegraph's `stealth: true` or Notte's `proxies: true` + `solve_captchas: true`
412- **JavaScript-heavy SPAs**: Use Scrapegraph's `render_heavy_js: true` or Notte browser sessions
413- **Batch/bulk scraping**: Olostep batches for processing many URLs at once with constant processing time
414- **Async crawls**: Olostep and Scrapegraph crawls are async — start with POST, poll for results
415- **Page interactions**: Use Scrapegraph `steps` for simple interactions before extraction, or Notte sessions for complex multi-step flows
416- **Pagination**: Scrapegraph's `total_pages` (up to 100) handles multi-page extraction automatically
417- **Convert to markdown**: Scrapegraph `/v1/markdownify` for clean markdown from any page
418- **Combine APIs**: For maximum data, use Scrapegraph for AI extraction + Riveter for structured validation + Olostep for raw content
419 
420## Discover More
421 
422List all endpoints for any API, or add a path for parameter details:
423 
424```bash
425curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
426 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
427 -H "Content-Type: application/json" \
428 -d '{"prompt":"scrapegraph API endpoints"}' api show olostep
429curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
430 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
431 -H "Content-Type: application/json" \
432 -d '{"prompt":"riveter API endpoints"}' api show brand-dev
433curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
434 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
435 -H "Content-Type: application/json" \
436 -d '{"prompt":"notte API endpoints"}'
437 
438Example: `curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
439 -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
440 -H "Content-Type: application/json" \
441 -d '{"api":"scrapegraph","path":"/v1/smartscraper`"}' for full parameter details.
442 
View all files on GitHub →

Details

Updated
Sep 21, 2026
License
MIT
Stars on the repo
★ 1,220
Checked
Source
gooseworks-ai/goose-skills ↗
Creator
gooseworks-ai · 206 listings
View creator

Made with web-scraping

Scrape — General-Purpose Web Scraping & Data Extraction — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)
Scrape — General-Purpose Web Scraping & Data Extraction — CleanShot 2026-07-13 at 20 16 54@2x (from the gooseworks-ai/goose-skills README)

by gooseworks-ai

Similar skills

See all →
SkillAI crawler access analysisAI Crawler Access Analysis Skillzubair-trabzada/geo-seo-claude · by zubair-trabzadaAI crawler access analysis. Checks robots.txt, meta tags, and HTTP headers to determine which AI crawlers can access the site. Provides a complete access map and recommendations for maximizing AI visibility while maintaining appropriate control.★ 10.8k GitHub starsSkillAutomate browser tasks, scrape websites, fill formsBrowser Automation - POWERFULalirezarezvani/claude-skills · by alirezarezvaniUse when the user asks to automate browser tasks, scrape websites, fill forms, capture screenshots, extract structured data from web pages, or build web automation workflows. NOT for testing — use playwright-pro for that.★ 26.3k GitHub starsSkillBrowser automation skill for controlling Google's NotebookLMNotebookLM — Browser Automationalirezarezvani/claude-skills · by alirezarezvaniBrowser automation skill for controlling Google's NotebookLM. Use when the user wants anything done in NotebookLM (e.g., 'open NotebookLM', 'check my [name] notebook', 'ask my notebook about X', 'add [source] to NotebookLM', 'generate a Video Overview from my notebook', 'use NotebookLM Studio'). Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio/Video Overviews, Mind Maps, Reports incl. Briefing Doc/Study Guide/FAQ, Flashcards, Quiz, slide decks, infographics — discover the exact set from the live Studio panel; the UI evolves fast), and creating new notebooks. Requires browser automation environment — fails gracefully when unavailable.★ 26.3k GitHub starsSkill4-tier progressive web scraping that auto-escalates WebFetchBrightdatadanielmiessler/LifeOS · by danielmiessler4-tier progressive web scraping that auto-escalates WebFetch to curl to Interceptor to Bright Data proxy for bot detection and CAPTCHAs, with single-URL and multi-page crawl modes, output as markdown. USE WHEN Bright Data, scrape URL, web scraping, bot detection, crawl site, CAPTCHA, can't access, site blocking, extract page content, scrape whole site, spider domain, convert URL to markdown, getting blocked. NOT FOR simple public content (use WebFetch directly), social platform scraping with named actors (use Apify), or real-Chrome bot bypass with logged-in sessions and zero CDP fingerprint (use Interceptor).★ 19.3k GitHub starsSkillScrape blog posts via RSS feeds with Apify fallbackBlog feed monitorgooseworks-ai/goose-skills · by gooseworks-aiScrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites. Use when you need to monitor competitor blogs, track industry content, or aggregate blog posts by keyword.★ 1.2k GitHub starsSkillExtract structured data from web pages using AIExtract webpage datagooseworks-ai/goose-skills · by gooseworks-aiExtract structured data from web pages using AI★ 1.2k GitHub stars

More from gooseworks-ai

SkillMine the highest-converting ad angles from customer reviewsAd angle minergooseworks-ai/goose-skills · by gooseworks-aiMine the highest-converting ad angles from customer reviews, Reddit complaints, support tickets, and competitor ads. Extracts actual pain language, competitor weaknesses, and outcome phrases that real buyers use. Outputs a ranked angle bank with proof quotes and recommended ad formats per angle.★ 1.2k GitHub starsSkillAnalyze ad campaign performance data to identify what'sAd campaign analyzergooseworks-ai/goose-skills · by gooseworks-aiAnalyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.★ 1.2k GitHub starsSkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzergooseworks-ai/goose-skills · by gooseworks-aiFor paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.★ 1.2k GitHub starsSkillAnalyze the message match between your ads and landing pagesAd to landing page auditorgooseworks-ai/goose-skills · by gooseworks-aiAnalyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.★ 1.2k GitHub starsSkillCheck and improve your brand's visibility across AI searchAeogooseworks-ai/goose-skills · by gooseworks-aiCheck and improve your brand's visibility across AI search engines (ChatGPT, Perplexity, Gemini, Grok, Claude, DeepSeek). Set up tracking, run visibility analyses, audit your website for AI readability, and get actionable recommendations. Uses the npx goose-aeo@latest CLI.★ 1.2k GitHub starsSkillSearch Amazon products - find items, compare pricesAmazon Product Searchgooseworks-ai/goose-skills · by gooseworks-aiSearch Amazon products - find items, compare prices, read reviews★ 1.2k GitHub stars