URL in. Clean JSON out.
No schema. No DOM walking.
Drop-in API for AI apps and agents. Send a URL and a plain-English prompt, and get back the fields you asked for, named and typed. Headless browser, anti-ban, retries, all included.
{ } ← click "Run extraction" ▍
{
"title": "Agents eat SaaS",
"author": "L. Reyes",
"publish_date": "2026-05-01",
"summary": "Autonomous agents are dissolving the line between buyer and user. Implications for product pricing are immediate."
}
{ } ← click "Run extraction" ▍
{
"price": 489,
"currency": "USD",
"availability": "in_stock",
"rating": 4.6,
"review_count": 1284,
"top_reviews": [
"Best lumbar support I've ever used.",
"Shipping was fast, assembly was 12 minutes.",
"Wish the armrests went a touch lower."
]
}
{ } ← click "Run extraction" ▍
{
"title": "Staff Engineer, Platform",
"company": "Northwind",
"location": "Remote (US, EU)",
"salary_range": {
"min": 220000,
"max": 290000,
"currency": "USD"
},
"remote_ok": true,
"years_experience": 8
}
Three workflows. One endpoint.
Feed your retrieval pipeline.
Crawl any source (docs, news, forums) and pipe clean, structured chunks straight into your vector store. No HTML noise, no boilerplate stripping.
Drop into any agent loop.
Use as a function call, MCP tool, or LangChain/LlamaIndex tool. The agent passes a URL and a prompt; we handle browser, anti-ban, and parsing.
Ship features that need fresh web data.
Lead enrichment, competitive monitoring, content aggregators: anything where "the web is the source of truth" and the page shape varies by site.
However your stack is wired.
curl -X POST https://api.ujeebu.com/ai-scraper \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://news.example.com/article",
"prompt": "title, author, publish_date, summary"
}'
from ujeebu import Client
uj = Client("YOUR_KEY")
result = uj.ai.extract(
url="https://news.example.com/article",
prompt="title, author, publish_date, summary",
)
print(result.json)
import { Ujeebu } from "ujeebu";
const uj = new Ujeebu("YOUR_KEY");
const result = await uj.ai.extract({
url: "https://news.example.com/article",
prompt: "title, author, publish_date, summary",
});
console.log(result.json);
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
body := []byte(`{
"url": "https://news.example.com/article",
"prompt": "title, author, publish_date, summary"
}`)
req, _ := http.NewRequest("POST", "https://api.ujeebu.com/ai-scraper", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer YOUR_KEY")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
out, _ := io.ReadAll(resp.Body)
fmt.Println(string(out))
}
// Drop into your function-calling loop
const tools = [{
type: "function",
function: {
name: "extract_url",
description: "Extract structured data from any web page",
parameters: {
type: "object",
properties: {
url: { type: "string" },
prompt: { type: "string", description: "fields to extract" }
},
required: ["url", "prompt"]
}
}
}];
// When the model calls extract_url(args):
const data = await uj.ai.extract(args);
# Add to your Claude Desktop / Cursor config:
{
"mcpServers": {
"ujeebu": {
"command": "npx",
"args": ["-y", "@ujeebu/mcp"],
"env": { "UJEEBU_KEY": "YOUR_KEY" }
}
}
}
# The agent now has tools: extract_url, screenshot_url,
# search_serp, get_article, all wired up.
# Python SDK
pip install ujeebu
from ujeebu import Client
uj = Client("YOUR_KEY")
# Node.js SDK
npm install ujeebu
import { Ujeebu } from "ujeebu";
const uj = new Ujeebu("YOUR_KEY");
# Full reference and examples: /docs
What you stop worrying about.
Pay only for what works.
Failed extractions cost you $0. Compare that to billing per request (or per proxy GB) and the math gets ugly fast.
Anti-ban built in.
Residential proxies, browser fingerprinting, automatic retries, JS rendering. You write a prompt; we handle the gauntlet.
No schema, no scraping code.
Skip the JSON schema dance. Describe fields in English; get them named and typed. Add examples for stricter shape.
Mix with rule-based when you need to.
When prompt extraction is overkill, fall back to our HTML, Markdown, or article endpoints: same key, same billing.
Failed requests cost zero. 5,000 credits free, no card. One credit pool across every endpoint. The same key works in production.
Pay per success. Start free.
AI extractions are 25 credits each. Failed pages don't count. The same plans cover every Ujeebu endpoint, one credit pool.
Before you sign up.
How is this different from Firecrawl, Jina, or Reader API?▼
What pages can it extract from?▼
What's a 'credit' and why per-success billing?▼
Do I need to provide a JSON schema?▼
Can I use it inside an agent / function-calling loop?▼
Is it legal to scrape?▼
Can I top up if I run out of credits?▼
5,000 free credits. 60 seconds to first JSON.
No credit card. No sales call. Just an API key and a quickstart.
