Scrapejig

Point at the page.Keep the scraper.

A visual web scraper for Chrome. Click the fields you want and it infers the CSS selectors, previews the rows, and exports a standalone Playwright script. Selector inference and code generation both happen in your browser, and no page data leaves it. You keep a Python file, not a subscription that runs your scrapes.

quotes.toscrape.com

Click a field in the page below. Real markup from the picker's own test corpus.

Scrapejig
Pick

No fields picked yet.

    Flow: Pagination Max pages: 5
    Preview

    Nothing to preview.

    Export

    The export is a Python file, not a service.

    Export Python writes one self-contained scrape.py. It imports Playwright and nothing of ours. Run it with python3 and it writes scrape_output.csv and scrape_output.json beside itself.

    The picks are baked in as plain constants at the top, so changing the start URL, the page cap or a selector is an edit, not a re-pick. Every non-obvious branch in it explains itself, including the two failures you will actually meet: a cookie wall and a bot check. Read the whole file, annotated.

    If Scrapejig disappears tomorrow, the script keeps running.

    $ python3 scrape_quotes_toscrape_com.py Scraped 50 rows -> scrape_output.csv and scrape_output.json
    scrape_quotes_toscrape_com.py 191 lines
    """Scrape quotes.toscrape.com — generated by Scrapejig on 2026-09-09.
    
    Setup (one time):
        pip3 install playwright
        python3 -m playwright install chromium
    
    Run:
        python3 scrape_quotes_toscrape_com.py
    
    If pip3 says "externally-managed-environment" (Homebrew, Debian, Ubuntu 23.04+),
    create a virtual environment and run all three lines inside it:
        python3 -m venv .venv && source .venv/bin/activate
    Every new terminal needs that activate line again before the script will run.
    
    On Windows the launcher is py: py -m pip install playwright, then
    py -m playwright install chromium, then py scrape_quotes_toscrape_com.py.
    A venv activates there with .venv/Scripts/activate in place of the source line.
    
    Output: scrape_output.csv and scrape_output.json in the working directory.
    This file is yours — edit it freely. The constants below are the usual knobs.
    """
    
    import csv
    import json
    import sys
    import time
    
    from playwright.sync_api import sync_playwright
    
    START_URL = "https://quotes.toscrape.com/"
    HEADLESS = True
    OUTPUT_BASE = "scrape_output"
    DELAY_SECONDS = 1.0  # pause between page loads; raise to be gentler
    ITEM_SELECTOR = "div.quote"
    FIELDS = ["quote", "author", "tags"]
    NEXT_SELECTOR = "li.next a"
    MAX_PAGES = 5  # set in the panel; change to None to scrape every page
    
    
    def extract_item(item):
        """Pull one row's fields from a single item element."""
        return {
            "quote": text(item, "span.text"),
            "author": text(item, "small.author"),
            "tags": text(item, "div.tags"),
        }
    145 more lines: rendered_text, text, rows_on, open_start_page, scrape, main, write_output.

    Four ways to scrape a site.

    Pick the mode in the panel before you export. The preview and Copy CSV always show the page in front of you; the generated script is what does the walking. A worked example of each.

    Single page

    Scrape the page you are on and stop.

    Pagination

    Pick the next link. The script clicks through until the link runs out.

    Max pages is yours to set.

    Infinite scroll

    Scroll and re-read until the feed stops growing.

    Stops at 200 scrolls.

    Load more button

    Pick the button. The script clicks it until it goes away.

    Stops at 200 clicks.

    Drill-down

    Mark a link column to follow, then pick fields on one detail page. Those columns join every row. A detail page that fails costs you that page's fields and nothing else — the row keeps what the listing gave it.

    Web scraping that never sends your data anywhere.

    Selector inference, the live preview and the code generation all run inside the extension. Nothing you look at, pick or preview is sent anywhere, because there is nowhere for it to go. The only request Scrapejig ever makes is the licence-key check.

    What Scrapejig does not do.

    Stated plainly so you do not have to find out after paying:

    • No scheduled runs.
    • No cloud scraping — your machine runs the script.
    • No recipe sharing between people.
    • No team accounts.

    Pricing: buy it once, £29.

    One purchase, one licence key, no renewal. Picking and previewing stay free whether you buy or not.

    Free

    £0

    No key, no email

    Point, click, pick fields, set the flow mode and watch the live preview. Unlimited, on any site, forever.

    Includes pick and preview.

    Free key

    £0

    Email address, key by return

    Everything above, plus getting the previewed rows out of the panel and into a spreadsheet.

    Adds Copy CSV.

    Pro

    £29 £49

    Launch price, one-time

    Everything above, plus the generated Playwright script — the thing you keep, edit and run yourself.

    Adds Export Python.

    These are the prices Scrapejig launches at, published early so nobody is surprised by them later. The launch discount is applied at checkout.

    Questions people ask before buying.

    Does anything I scrape leave my browser?

    No. Selector inference, the live preview and the code generation all run inside the extension. There is no telemetry of any kind, and the only server the extension ever contacts is the licence server: it sends a licence key and a random per-install identifier, or an email address when you ask for a free key, and never page content. The privacy page names every request that exists in the codebase.

    Do I need to know Python to use it?

    To pick fields and watch the preview, no, and nothing needs installing for that. To run what it exports you need Python 3 and Playwright on your machine, and you need to be comfortable running a file from a terminal. You do not need to write any Python: your picks arrive as plain constants at the top of the generated script.

    What does the £29 buy?

    Export Python, once, with no renewal. Picking fields, setting the flow mode and watching the live preview are free whether you buy or not, and a free key, which needs only an email address, adds Copy CSV. The Pro licence adds the generated Playwright script: the file you keep, edit and run yourself.

    Can it handle pagination, infinite scroll and load-more buttons?

    Yes. Those are three of the four flow modes, and the fourth is for a page that genuinely ends. You choose the mode in the panel before exporting, and each one has its own stopping condition written into the generated script. The flow modes page prints the real code for all four, plus drill-down into detail pages.

    What happens when the site changes and the scraper stops working?

    You edit a string. Every selector lives near the top of the exported file: one for the repeating item, one per column inside extract_item, and one for the next link or load-more button. Re-picking in the panel and exporting again works too, and is quicker when several things moved at once. The annotated walk-through shows where each one is.

    Can Scrapejig run my scrapes on a schedule?

    No. There are no scheduled runs, no cloud scraping, no recipe sharing and no team accounts, in any tier. What you get is an ordinary Python file, so putting it on a schedule is a line in cron or a task in Windows Task Scheduler, running on your own machine.

    Can it scrape a site behind a cookie banner or a login?

    Often, and the generated file carries the fix for both in a comment inside main(). A headless browser starts with a profile that has agreed to nothing, so plenty of sites cover the page with a consent overlay that swallows every click, and a login-gated site never shows the content at all. Record a session once with Playwright's codegen, change one line, and every run reuses it. It is not a guarantee against every bot check, and the script says so on standard error when it meets one.

    How is this different from Web Scraper.io?

    Their free browser extension runs the scrape itself, with nothing else installed on your machine. Scrapejig does not run scrapes at all: it writes you a Playwright script in Python, and you run that. The comparison page covers both sides fairly, including the cases where theirs is the better answer.