The web,
as an API.

A web scraping API that turns any URL into clean, schema-validated JSON. Fetch pages, extract data, replay logins or drive a cloud browser, all from one credit balance.
Get an API key 500 free credits · no card
Try in playground
  • Billed only on success
  • Browser-grade fetching
runs live · no signup
https://
// smartscraper · smartbrowsePrompt it, or record itSmartScraper reads the page from a prompt; SmartBrowse records the clicks & logins that reach it.
~/wsai — smartscraperlive

SmartScraper — a URL and a plain-English prompt in, schema-validated JSON out.

One SDK, every stack — drop it in and go

❯pnpm addwebscrape-ai▊
// products

Four tools. One wallet.

Start with a plain fetch and go as far as driving your own browser. Every step spends the same credits.
// one walletEvery tool spends the same credits.
~/wsai — smartscraper

You describe the data. We return it as JSON.

A URL and a plain-English prompt in, structured JSON out. Pass a JSON Schema and the result is validated against it before it reaches you.

curl -X POST https://api.webscrape.ai/v1/smartscraper \
  -H "X-API-Key: $WEBSCRAPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"website_url": "https://news.ycombinator.com",
       "user_prompt": "Top 5 stories: title, url, points"}'
▸ cost5 credits / page
▸ billedon success
// use cases

Real pages. Typed fields.

Each example is a real request against a public page. Run any of them in the free playground before you sign up.
~/wsai — use-cases

A product page becomes a price row.

Title, price, rating and stock come back as typed fields you can store and diff run to run. You describe the fields; there are no selectors to write.

// request
website_url
https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html
user_prompt
"Extract the book title, price, star rating, and stock availability."
// returns
{
  "title": string,
  "price": number,
  "rating": number,
  "in_stock": boolean
}
▸ fields4 typed
▸ cost5 credits / page
▸ billedon success
// how it works

One request. Clean JSON. Any language.

Every request runs the same pipeline: fetch, clean, reduce, extract, validate. Call it from the official SDKs for Python, Node, Go, Rust and Java, or from any HTTP client.
~/wsai — pipeline.trace live
horizontal · trace6 stages
URLPOST /v1/smartscraper—request
request
fetchpage fetch160ms405 KB html
405 KB html
cleanhtml dom cleaner20ms80 KB dom
80 KB dom
reducenoise filter10ms5 KB text
5 KB text
extractfield extraction990ms5 fields
5 fields
JSONschema · validated2ms200 OK
▸total6/6 stages·1182ms

// from your code The same request, in the language you already use.

~/wsai — request
# fetch the top 5 HN stories
curl -X POST https://api.webscrape.ai/v1/smartscraper \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "website_url": "https://news.ycombinator.com",
    "user_prompt": "Extract the top 5 stories with title, url, and points"
  }'
# fetch the top 5 HN stories
from webscrape_ai import Client

with Client() as client:  # auth via WEBSCRAPE_API_KEY
    resp = client.smartscraper(
        website_url="https://news.ycombinator.com",
        user_prompt="Extract the top 5 stories with title, url, and points",
    )
    print(resp.data.result)
// fetch the top 5 HN stories
import { Webscrape } from "webscrape-ai";

const client = new Webscrape();  // auth via WEBSCRAPE_API_KEY
const res = await client.smartscraper({
  website_url: "https://news.ycombinator.com",
  user_prompt: "Extract the top 5 stories with title, url, and points",
});
console.log(res.data.result);
// fetch the top 5 HN stories
// go get github.com/webscrape-ai/webscrape-ai/sdk/go
client, _ := webscrape.New()  // auth via WEBSCRAPE_API_KEY

resp, _ := client.SmartScraper(context.Background(), &webscrape.SmartScraperRequest{
  WebsiteURL: "https://news.ycombinator.com",
  UserPrompt: "Extract the top 5 stories with title, url, and points",
})
fmt.Println(string(resp.Data.Result))
// fetch the top 5 HN stories
use webscrape_ai::{blocking::Client, SmartScraperRequest};

let client = Client::from_env()?;  // auth via WEBSCRAPE_API_KEY
let resp = client.smartscraper(
    SmartScraperRequest::new(
        "https://news.ycombinator.com",
        "Extract the top 5 stories with title, url, and points",
    ),
)?;
println!("{}", resp.data.result);
  • ▸cost5 credits / page
  • ▸billedon success
  • ▸outputschema-validated JSON
~/wsai — response
response.json200 OK
// 200 OK · extracted in ~1.2s
{
  "status": "completed",
  "data": {
    "result": {
      "stories": [
        {
          "title": "Show HN: I built a real-time code editor",
          "url": "https://example.com/editor",
          "points": 342
        },
        {
          "title": "Why Rust is the future of systems programming",
          "url": "https://example.com/rust",
          "points": 281
        },
        // … 3 more stories
      ]
    }
  },
  "credits_used": 5,
  "credits_remaining": 495,
  "request_id": "req_aB3xY9Kp"
}
// pricing

Start free. Pay as you go.

500 free credits to start. Every product spends from one balance, and failed requests cost nothing.

Founding launch — 30% off for life on any subscription with code FOUNDING

Free

Free forever — credits refill every month, not a one-time trial.

$0

≈ 60 AI extractions / month

  • 500 starting credits
  • 300 free credits every month
  • 1 concurrent request
  • 10 requests / minute
  • 7-day data retention
  • Limited SmartBrowse

Hobby

For side projects and prototypes.

$19

≈ 1,000 AI extractions / month

  • 5,000 credits / month
  • 10 concurrent requests
  • 60 requests / minute
  • Standard fetch tier
  • 30-day data retention
  • 2 GB cloud browser / month
  • 20% off extra credit

Enterprise

Tailored solutions for large organizations.

Custom

Unlimited extractions

  • Unlimited credits
  • Custom rate limits
  • Dedicated infrastructure
  • Dedicated routing
  • 99.9% SLA guarantee
  • Dedicated account manager
  • On-premise deployment

Base rate: 1 credit / Scrape · 5 / SmartScraper · 2 / SmartBrowse page · 0.2 / Browse minute · every rate

AI agent? Read the plain-text version at /pricing.md.

// faq

Questions, answered.

What teams ask before they put it in production.
// frequently asked · 6 entries