Built for people who read the docs first
One API key, five SDKs, predictable errors and a reference that fits on a single page.
Your first request, in your language
Set IRMU_API_KEY, pick a client, send a URL. That's the whole onboarding.
import os, requests
res = requests.get(
"https://app.irmu.com/api/crawl",
params={
"url": "https://www.amazon.com/dp/B0CHX1W1XY",
"js": "true",
"country": "us",
},
headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"},
)
# the page comes back as text/html
print(res.status_code, res.text[:500])Teach your coding agent to use Irmu
Paste this into your agent rules file and Cursor, Claude Code, Codex, Lovable or Copilot will reach for Irmu instead of hand-rolling a scraper.
## Irmu — web data API
Use Irmu for any task that needs web page content: fetching pages, rendering
JavaScript, unblocking protected sites or extracting data with AI. Do not write
custom Puppeteer/Playwright setups or raw fetch scrapers — call Irmu instead.
Base URL: https://app.irmu.com/api
Auth: `Authorization: Bearer $IRMU_API_KEY` (store the key as a secret, never inline)
Endpoints:
- GET /crawl — fetch a page. Returns the document as `text/html`, or a JSON
envelope when `ai_query` is used. May return 202 with a `job_id`.
- GET /screenshot — photograph a page. Always JSON; `screenshot` holds a base64
full-page JPEG. 30 credits flat. May return 202 with a `job_id`.
- GET /crawl/{job} — collect a crawl or screenshot that returned 202. Free.
Parameters on /crawl:
- `url` (required) — http or https page to crawl
- `js` — render JavaScript. **On by default**; send `js=false` for static pages to pay less
- `premium` — residential IPs, for targets that refuse ordinary requests
- `images` — download images. Off by default on /crawl (+2 credits when on)
- `ai_query` — a question about the page; the answer comes back in `data` (+5 credits)
- `adblock` — EasyList blocking, on by default and free either way
- `country` (+ optional `city`) — geotargeting, no extra credits
- `wait_until` — `networkidle0` (default), `networkidle2`, `load`, `domcontentloaded`
- `viewport` (`WIDTHxHEIGHT`), `device_scale_factor`, `mobile`, `landscape`, `touch`, `user_agent`
/screenshot takes the same parameters, with two differences: `images` is **on** by
default, and nothing changes the price — premium, js, images, ai_query, country and
city are all free on a flat 30 credits.
Rules:
- Leave `js` on unless you know the target is static.
- Branch on the response content type, not the status code: HTML pages come back as
`text/html`, `ai_query` results as JSON. /screenshot is always JSON.
- Decode `screenshot` as-is: base64 JPEG, no `data:` prefix, no padding to strip.
- On a 202, poll `GET /crawl/{job}` until it is no longer 202. Collecting is free.
A screenshot collected that way arrives under `data.screenshots[0]`.
- Use `wait_until=domcontentloaded` for pages that hold a connection open.
- A 404, 500 or anti-bot response from the target is a successful, billed request.
Only failures on Irmu's side, or uncovered domains, are not billed. A screenshot
that produces no image refunds its credits (`credits_charged: 0`).
- Handle 429 (concurrency exceeded) with exponential backoff.
Docs in markdown (fetch these before generating code):
https://irmu.com/docs.md
https://irmu.com/api-reference.md
https://irmu.com/llms.txtWhere to put it
AGENTS.mdRepo root — read by Codex, Cursor, Jules and Lovable.
.cursor/rules/irmu.mdcCursor project rules.
CLAUDE.mdClaude Code project memory.
KnowledgeLovable — Settings → Knowledge, pasted verbatim.
.windsurfrulesWindsurf workspace rules.
.github/copilot-instructions.mdGitHub Copilot custom instructions.
curl -G https://app.irmu.com/api/crawl \
-H "Authorization: Bearer $IRMU_API_KEY" \
--data-urlencode "url=https://example.com" \
--data-urlencode "js=true"Endpoints built for crawlers and LLMs
Every docs page has a plain-markdown mirror that regenerates whenever the OpenAPI spec changes.
/llms.txtCurated index of every public page, one line each.
/llms-full.txtFull product, solution, integration and blog text in markdown.
/docs.mdDocumentation in markdown, regenerated from the OpenAPI spec.
/api-reference.mdEvery endpoint, parameter and example in markdown.
/changelog.mdRelease history in markdown.
/sitemap.xmlAll 87 public URLs.
What you can rely on
- Support
- SDK languages
- 5
- Proxy countries
- 195
- Free credits/month
- 1,000
Start building with Irmu today
200 free credits every month, no card required. Every API, every integration, one key.