Scrape websites, extract structured data
Scrape — General-Purpose Web Scraping & Data Extraction

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)
npx skills add gooseworks-ai/goose-skills --skill web-scraping -g -a claude-codemkdir -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-scrapingNew-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" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md18.0 KBskill.meta.json279 B
Read the files here
gooseworks-ai/
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: trueor Notte'sproxies: true+solve_captchas: true - JavaScript-heavy SPAs: Use Scrapegraph's
render_heavy_js: trueor 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
stepsfor 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/markdownifyfor 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 | |
| 2 | name web-scraping |
| 3 | 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. |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Scrape — General-Purpose Web Scraping & Data Extraction |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Scrape 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 | |
| 27 | Best 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 | |
| 31 | curl -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 | |
| 42 | curl -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 | |
| 68 | curl -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: |
| 73 | curl -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 | |
| 81 | curl -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 | |
| 89 | curl -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: |
| 98 | curl -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 | |
| 106 | curl -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 | |
| 114 | curl -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 | |
| 120 | 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). |
| 121 | |
| 122 | ## 2. Olostep — Scalable Scraping & Batch Jobs |
| 123 | |
| 124 | Best for: High-volume scraping, batch processing, site crawling, URL discovery, and AI-powered answers from pages. |
| 125 | |
| 126 | **Scrape a single page:** |
| 127 | |
| 128 | curl -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 | |
| 136 | curl -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 | |
| 144 | curl -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 | |
| 152 | # Step 1: Start crawl |
| 153 | curl -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 |
| 162 | curl -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 |
| 167 | curl -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 |
| 172 | curl -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 | |
| 180 | curl -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: |
| 191 | curl -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: |
| 196 | curl -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 | |
| 202 | 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`. |
| 203 | |
| 204 | ## 3. Riveter — Structured Extraction with Defined Schemas |
| 205 | |
| 206 | Best for: Extracting data into a consistent, predefined structure. Define input URLs and output fields with prompts. |
| 207 | |
| 208 | **Simple page scrape:** |
| 209 | |
| 210 | curl -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 | |
| 218 | curl -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: |
| 232 | curl -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: |
| 237 | curl -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 | |
| 245 | curl -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 | |
| 260 | 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). |
| 261 | |
| 262 | ## 4. Brand.dev — Brand Assets, Logos & Company Data |
| 263 | |
| 264 | Best for: Extracting brand logos, colors, fonts, design systems, screenshots, and AI-powered data extraction from company websites. |
| 265 | |
| 266 | **Get full brand data:** |
| 267 | |
| 268 | curl -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 | |
| 276 | curl -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"}}' |
| 280 | curl -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]"}}' |
| 284 | curl -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 | |
| 292 | curl -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 | |
| 300 | curl -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 | |
| 308 | curl -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 | |
| 316 | curl -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 | |
| 327 | curl -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 | |
| 335 | 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. |
| 336 | |
| 337 | **Quick scrape** (no session needed): |
| 338 | |
| 339 | curl -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 | |
| 347 | # Step 1: Start a browser session |
| 348 | curl -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 |
| 354 | curl -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 |
| 360 | curl -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 |
| 366 | curl -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 |
| 372 | curl -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 | |
| 380 | curl -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: |
| 389 | curl -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 | |
| 397 | curl -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 | |
| 403 | Key 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 | |
| 422 | List all endpoints for any API, or add a path for parameter details: |
| 423 | |
| 424 | |
| 425 | curl -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 |
| 429 | curl -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 |
| 433 | curl -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 | |
| 438 | Example: `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 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with web-scraping

Similar skills
See all →
SkillAI crawler access analysisAI Crawler Access Analysis Skill
SkillAutomate browser tasks, scrape websites, fill formsBrowser Automation - POWERFUL
SkillBrowser automation skill for controlling Google's NotebookLMNotebookLM — Browser Automation
Skill4-tier progressive web scraping that auto-escalates WebFetchBrightdata
SkillScrape blog posts via RSS feeds with Apify fallbackBlog feed monitor
SkillExtract structured data from web pages using AIExtract webpage dataMore from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search