Playground Sign in Start free
Generic Scraper

Headless Chrome. Without the headaches.

The workhorse: real Chromium, real residential proxies, real cookie state. Fetch any URL, render JS, return HTML or screenshot. The thing you reach for when you just need the page.

1 to 30
credits / call
92ms
static p50
180+
countries
GET /scrape
GET /scrape
  ?url=https://shop.example.com/p/lamp-12
  &js=true
  &proxy_type=premium
  &proxy_country=US
  &wait_for=.price

→ 200 OK · Ujb-Credits: 25 · 2.1s
<!doctype html>
<html lang="en">
  ...
  <span class="price">$49.00</span>
  ...
</html>
Live playground

See it work, before you sign up.

Drop in a URL, run a real call against the live API, and watch the JSON come back in about a second. No API key required.

Real Chromium

Not a fingerprint shim. We run actual headed Chrome with mouse jitter, page-load timing, and human-grade TLS. Most sites can't tell.

auto_proxy: pay-on-success

Set auto_proxy=true and we move up through the proxy options until one returns the page. You are billed only for the proxy that returned the response. Off by default; pin a tier with proxy_type when you know what a site needs.

You control the per-call cost

proxy_type is the cost lever. A plain fetch is 1 credit, 5 with JavaScript rendering (js=true). With JavaScript, premium proxies are 25 credits and residential proxies 30. Start cheap on easy targets and escalate (or set auto_proxy=true) when a site genuinely needs it. The exact cost of each call is in the Ujb-Credits response header.

180+ geos

Set proxy_country=US or proxy_country=DE (premium and residential proxies) to route the request through an IP in that country. Proxy country (geo-targeting) is available on paid plans.

Smart waiting

wait_for: ".price" blocks until that selector appears. wait_for_network_idle waits for fetch storms to settle. No setTimeout(5000).

Screenshots + PDF

Full-page or viewport screenshots, or a PDF of the rendered page. Useful for debugging blocks and capturing content for archival.

Per-call sessions

Pass session_id to keep cookies and localStorage across requests. Perfect for paywalled or login-gated content.

Why not just Playwright?

Playwright gives you a browser; it doesn't give you proxies, anti-bot bypass, JA4 fingerprint patching, CAPTCHA-solving, or pay-on-success billing. We run a real Chromium under our own anti-detection stack and our credit pool, so the same code that works on a small site keeps working when the site adds Cloudflare.

Drop-in code

Copy. Paste. Ship.

import { UjeebuClient } from "@ujeebu-org/ujeebu-sdk";
const client = new UjeebuClient(process.env.UJEEBU_API_KEY);

const response = await client.scrape("https://shop.example.com/p/lamp-12", {
  js:            true,
  proxy_type:    "premium",
  proxy_country: "US",
  wait_for:      ".price"
});
console.log(response.headers["ujb-credits"]); // 25
import os
from ujeebu_python import UjeebuClient
client = UjeebuClient(os.environ["UJEEBU_API_KEY"])

response = client.scrape(
    "https://shop.example.com/p/lamp-12",
    params={"js": True, "proxy_type": "premium",
            "proxy_country": "US", "wait_for": ".price"},
)
print(response.status_code)  # 200
curl -G https://api.ujeebu.com/scrape \
  -H "ApiKey: $UJEEBU_API_KEY" \
  --data-urlencode "url=https://shop.example.com/p/lamp-12" \
  -d "js=true&proxy_type=premium&proxy_country=US&wait_for=.price"
client := ujeebu.NewClient(os.Getenv("UJEEBU_API_KEY"))

page, err := client.Scrape(ujeebu.ScrapeParams{
    URL:          "https://shop.example.com/p/lamp-12",
    JS:           true,
    ProxyType:    "premium",
    ProxyCountry: "US",
    WaitFor:      ".price",
})
What people build with it

Real things real teams shipped this quarter.

Bulk page collection

Crawl a sitemap of 100k URLs and pipe HTML into your indexing job. Concurrent requests scale linearly with your plan tier.

Login-gated content

Authenticate once via session_id, then scrape behind the wall. Cookies persist across calls until they expire.

Geo-specific pricing

Same URL, 12 geos, 12 prices. Loop with the proxy_country param (paid plans), store with locale. Never get redirected to the wrong currency again.

Visual regression

Take daily full-page screenshots of your competitors' pricing pages. Diff with pixelmatch. Get notified when anything changes.

Pricing

1 credit per Generic Scraper call. Here's what that buys.

One credit pool covers every endpoint. Failed calls cost 0. No per-feature upcharges, no premium-proxy tax. See full pricing →

Start free
Pay-as-you-go top-ups PAYG From $0.20 / 1K down to $0.08 / 1K · no subscription · works on the trial too

Buy a credit pack any time. No subscription required. Works on the trial too - great for one-off batches or sizing before you commit. Top-up credits expire 30 days after purchase. Each Generic Scraper call is 1 credit; counts below convert at that rate.

Pack Credits ~ Generic Scraper calls Price Per 1K credits  
Mini 50,000 50k $10.00 $0.20 Buy
Starter 100,000 100k $15.00 $0.15 Buy
Standard 500,000 500k $60.00 $0.12 Buy
Pro 1,000,000 1M $100.00 $0.10 Buy
Enterprise 5,000,000 5M $400.00 $0.08 Buy

Sign up free to unlock the top-up flow - the trial's 5,000 credits land instantly, and you can buy any pack right after from the dashboard.

Sign up free

Ship Generic Scraper tonight.

5,000 credits free. No card. Real residential proxies on the free tier.