28 actor families · 86 endpoints · normalized JSON

Vertical scrapers your agent
can actually rely on.

Amazon, Zillow, Google Maps, Markdown conversion, ATS career pages, job aggregators, Product Hunt, and an academic graph — plus 17 free public-data actors for GitHub, npm, PyPI, SEC filings, OpenAlex, Hacker News and more, and premium vendor-backed scrapers for Yelp, LinkedIn, and YouTube. One Bearer token. Normalized JSON. Automatic fallback baked in — when one path trips a CAPTCHA, another finishes the call without you ever knowing.

Automatic tiering

Each call routes through our managed browser pool or a fast structured-data path automatically. One tier field tells you which path served the request.

Normalized schema

Every actor returns the same shape no matter which path served it. An asin is an asin, a place_id is a place_id — clean, predictable JSON your agent can depend on.

Honest failure modes

When a call can't be served you get {ok:false, error} with a clear reason — not a 500, and never a CAPTCHA page written into your database. Failed calls auto-refund.

The 8 actor families

The 8 core families below total 19 endpoints; 17 free public-data families bring it to 69, and 5 premium vendor-backed families add 17 more — 86 in all on api.ollagraph.com, one Bearer token.

Amazon

1 endpoint

Title, price, rating, review count, ASIN, availability, and image from any Amazon product URL — US, UK, DE, JP and most other storefronts. Full recipe →

POST /v1/actors/amazon  { url }

Zillow

1 endpoint

Address, price, Zestimate, beds, baths, square footage, and year built from any Zillow listing — extracted from the embedded payload, not brittle DOM scraping. Full recipe →

POST /v1/actors/zillow  { url }

Google Maps

1 endpoint

Name, rating, review count, hours, address, coordinates, and category from any Google Maps place URL. Full recipe →

POST /v1/actors/google-maps  { url }

Markdown

1 endpoint

LLM-ready markdown for any page — Readability-style extraction that keeps headings, links, and code while dropping boilerplate. Typically 80–95% smaller than the source HTML. Details →

POST /v1/actors/markdown  { url }

ATS career pages

3 endpoints

Open roles straight from a company's applicant-tracking system — Greenhouse, Lever, Ashby, Workable, and more. /detect identifies the ATS behind a careers URL. Details →

POST /v1/actors/ats
POST /v1/actors/ats/detect
GET  /v1/actors/ats/supported

Jobs

7 endpoints

Search listings across job boards by query, or target a specific aggregator. Results normalize to title, company, location, posted date, and apply URL. Details →

POST /v1/actors/jobs/scrape
GET  /v1/actors/jobs/sites · GET /v1/actors/jobs/sources
POST /v1/actors/jobs/adzuna · /jobbank · /reed · /usajobs

Product Hunt

2 endpoints

The daily leaderboard (or any historical date) plus product detail by slug — title, tagline, votes, topics, makers. Details →

POST /v1/actors/producthunt/daily
POST /v1/actors/producthunt/product

Academic / Scholar

3 endpoints

Search academic literature, resolve a publication, and pull an author's record — titles, authors, year, citation counts, DOIs. Backed by an open scholarly graph. Details →

POST /v1/actors/scholar/search
POST /v1/actors/scholar/author
POST /v1/actors/scholar/publication

Plus 17 free public-data actors

Public-API-backed sources — no proxy, no vendor cost, the same normalized envelope. 1 credit per call, failed calls auto-refund. 50 endpoints in all.

Developer

GitHub repos, users, issues, code search. npm packages + download stats. PyPI packages and releases.

/v1/actors/github/* · /npm/* · /pypi/*

Research & academia

arXiv + EuropePMC search, the OpenAlex scholarly graph, DOI resolution, ORCID records, ROR institutions, Zenodo datasets.

/v1/actors/arxiv · /openalex/* · /doi · /orcid/* · /ror/* · /zenodo/* · /europepmc

Corporate & finance

SEC EDGAR ticker lookup, filings, and company facts. GLEIF legal-entity (LEI) search and ownership tree.

/v1/actors/sec/* · /gleif/*

Security knowledge

NVD CVE lookup and search. MITRE ATLAS adversarial-ML tactics, techniques, and case studies.

/v1/actors/nvd/* · /atlas/*

Community & models

Hacker News stories, items, users, search. StackExchange questions and search. HuggingFace models, datasets, spaces.

/v1/actors/hackernews/* · /stackexchange/* · /huggingface/*

Every one returns tier: "public_api" — free public data, normalized to the same envelope. Full request shapes in the API docs.

5 premium vendor-backed actors

Heavier vertical scrapers for commerce, local, and media. 5-15 credits per call by family (vs 1 for public-data actors), same normalized envelope, failed calls auto-refund. 17 endpoints (yelp also has 3 async variants).

Amazon (rich)

3 endpoints · 8 credits

Search by query, product detail by ASIN, and paginated reviews — beyond the single-URL basic actor above. Eight marketplaces.

POST /v1/actors/amazon/search  { query, marketplace }
POST /v1/actors/amazon/product  { asin }
POST /v1/actors/amazon/reviews  { asin, max_pages }

Google Maps (rich)

3 endpoints · 8 credits

Places search by query+location, place detail by URL or CID, and reviews — beyond the single-place basic actor above.

POST /v1/actors/gmaps/search  { query, location }
POST /v1/actors/gmaps/place  { place_url | cid }
POST /v1/actors/gmaps/reviews  { place_url | cid }

Yelp

6 endpoints · 8 credits

Business search by query+location, business detail, reviews. Lead-gen and local SEO. Yelp's upstream is slow — a cold query runs for minutes, so each endpoint also has an async variant: POST …/async returns a job_id instantly, then deliver the result by signed webhook or poll GET /v1/jobs/{id}. Failed jobs auto-refund. Use async for anything interactive; the synchronous endpoints suit warm/cached queries.

POST /v1/actors/yelp/search  { query, location }
POST /v1/actors/yelp/business  { biz_path | biz_url }
POST /v1/actors/yelp/reviews
+ /async variant for each — { …, webhook_url? } → { job_id }

LinkedIn

2 endpoints · 15 credits

Public person profile and company page. Authorized use only — respect LinkedIn's Terms of Service. Supply your own li_at session cookie where required.

POST /v1/actors/linkedin/profile  { public_id | profile_url }
POST /v1/actors/linkedin/company  { slug | company_url }

YouTube

3 endpoints · 5 credits

Video metadata by URL or ID, channel by handle, and search — title, views, channel, length, publish date.

POST /v1/actors/youtube/search  { query }
POST /v1/actors/youtube/video  { url | id }
POST /v1/actors/youtube/channel  { handle | url }

These are vendor-backed (heavier than the public-data actors), so they're metered at 5-15 credits by family and carry automatic fallback. Full request shapes in the API docs.

One call, normalized JSON

Same auth, same envelope across every actor. Here's the Amazon product actor.

REQUEST
curl https://api.ollagraph.com/v1/actors/amazon \
  -H "Authorization: Bearer osk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://www.amazon.com/dp/B0CX23V2ZK"
  }'
RESPONSE
{
  "status": "success",
  "url": "https://www.amazon.com/dp/B0CX23V2ZK",
  "time_ms": 1240,
  "data": {
    "title": "Apple 2024 MacBook Air 13-inch …",
    "price": "$1,099.00",
    "rating": 4.8,
    "review_count": 1084,
    "asin": "B0CX23V2ZK",
    "availability": "In Stock"
  }
}

Why not build each scraper yourself?

One bill, one auth

Every actor behind one osk_… token. One usage report, one support thread, one credit balance — instead of a pile of per-site scrapers to keep alive.

Automatic fallback

When one path trips a CAPTCHA, you don't get a 403 — the call automatically retries on another path and the tier field tells you which served it. Same response shape, no client change.

Normalized output

Each actor maps its source into one clean schema, so your agent code stays the same when a site ships a layout change. No bespoke parser per site to babysit.

Honest about what's broken

A blocked source returns a clean warning, not a 500 or a mystery timeout — and failed calls auto-refund, so a bad fetch never costs you a credit.

Skip the per-site scrapers.

1,000 credits on signup. Every actor, day one. No card. Failed calls auto-refund.