Scrape any JavaScript-heavy site with Playwright and a Python page function. Pages that returned nothing are marked in the data and cost you nothing — you pay per delivered record, never per run. Every record says whether the page loaded, timed out or was blocked.
Returns your records with duplicates removed and values normalized — same fields as the input, nothing added or renamed. Exact, normalized or fuzzy matching on keys you choose. A data quality report lands under QUALITY_REPORT. Takes a dataset ID or inline JSON, so it chains after any scraper.
Returns url, text, author.handle, createdAt, likeCount, repostCount, replyCount and hashtags for every post. Reads Bluesky over the AT Protocol — no login needed for public data. Posts, profiles, threads and full-text search, with deduplication across relays. Empty runs cost nothing.
Scrape Google Maps listings: name, category, address, phone, website, rating, reviews, hours, coordinates. Every record says whether the list ran out or your limit did, so 120 results means something. Or watch a list: only changed places are delivered and charged, old value beside the new.
Turn any website into clean Markdown for your LLM or RAG pipeline. Navigation, cookie banners and boilerplate removed; every page says whether the text was truncated. Pay per delivered page — pages that returned nothing are free.
Scrape Google Trends: interest over time, interest by region and related queries for your keywords. Flat JSON or CSV, no login and no API key. If Google returns nothing for a keyword, the run says so instead of handing you an empty file.