Integrations
Scraping API
Browserless-style HTTP endpoints for one-shot page work: cleaned markdown, screenshots, and raw HTML.
POST /scrape
Get clean content from a page. Every request needs Authorization: Bearer $MORROW_API_KEY and a url or html target.
curl -X POST http://localhost:3000/api/v1/scrape \
-H "Authorization: Bearer $MORROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "format": "markdown"}'format is one of:
markdown(default) — the page rendered as Markdown.text— plaininnerText.article— Readability-based extraction: title/byline/excerpt/content/text plus a markdown rendering.
POST /screenshot
curl -X POST http://localhost:3000/api/v1/screenshot \
-H "Authorization: Bearer $MORROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "fullPage": true}' \
-o screenshot.pngAlso takes type (png or jpeg), quality, and selector to screenshot a single element.
POST /content
curl -X POST http://localhost:3000/api/v1/content \
-H "Authorization: Bearer $MORROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'Returns the fully rendered HTML after the page loads.
Page options
All three endpoints accept the same set of page-behavior options:
gotoOptions—{ waitUntil, timeout },waitUntilone ofload,domcontentloaded,networkidle,commit.waitForSelector—{ selector, timeout }.waitForTimeout— fixed delay in ms (max 60000).waitForFunction—{ fn, timeout }, a JS expression to poll.viewport—{ width, height }for this request.rejectResourceTypes/rejectRequestPattern— block resource types (e.g.image) or URL patterns from loading.setExtraHTTPHeaders— extra request headers.bestAttempt— return whatever loaded even if a wait condition times out, instead of erroring.
Scraping through a profile
Add "profile": "research-eu" to any of the three requests to run the scrape inside that profile's persistent, logged-in browser context instead of a throwaway one:
curl -X POST http://localhost:3000/api/v1/scrape \
-H "Authorization: Bearer $MORROW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/account", "profile": "research-eu", "format": "markdown"}'No cookie or session handoff required — if research-eu is already logged into the site, the scrape sees exactly what a signed-in visit would see. The profile auto-starts if it's stopped.
Full reference & codegen
Every request/response shape, including error codes, is documented at /api-docs — a themed Swagger UI backed by an OpenAPI 3 document at /api/v1/openapi.json. Point any OpenAPI client generator at it to produce a typed SDK in your language of choice.