Skip to main content
guide

Checkpoint & Resume Web Scraping: Never Lose Scraping Progress Again

RTILA Team 8 min read

Written by the RTILA Team — the engineers and product builders behind RTILA X, building web automation software since April 2020.

Checkpoint resume web scraping is the safety net that keeps long-running automations from turning into hours of wasted effort. If you’ve ever watched a 50,000‑page crawl crash at page 49,999—or lost a week’s worth of data to a sudden network blip—you know exactly why crash recovery scraping matters. RTILA X’s Checkpoint & Resume system (first shipped in version 8.0 and hardened through 8.3.x) was built to solve that problem at the engine level. It doesn’t just log what you’ve done; it snapshots the entire state of your project so you can pick up right where you left off, even after a power outage, a browser crash, or a forced reboot.

We’ve been building web automation tools since April 2020. In our experience, the gap between a “reliable” scraper and a truly production‑ready one almost always comes down to how gracefully it handles failure. That’s why we designed Checkpoint & Resume to be automatic, fast, and invisible—until you need it. The rest of this guide walks through exactly how it works, how to configure it, and how it saved a 1,000‑page crawl we deliberately crashed at page 500.

What Happens When a Long Crawl Crashes?

Most automation tools treat a crash as the end of the road. If your internet drops, the browser tab freezes, or your machine restarts for an update, you lose all in‑memory state. You have to figure out which URLs were already processed, manually restart from the right point, and hope you don’t introduce duplicates. That’s not just frustrating—it’s a data integrity risk.

RTILA X takes a different approach. The engine writes a checkpoint file to your local disk every time a page finishes processing (you control the frequency). That file contains everything the project needs to resume: the nextUrlIndex (the exact position in the URL list), all active variables, the full memory store, and a list of failedUrls that need retrying. Because RTILA X is local‑first—the entire runtime runs on your machine, not in a cloud container—the checkpoint survives crashes, network drops, and browser failures without any external dependency.

When you restart the project with the --resume flag, the engine reads that checkpoint and picks up the crawl from the next unvisited URL. There’s no manual counting, no spreadsheet cross‑referencing, and no risk of skipping pages. If a handful of URLs failed because of transient errors (a 503, a timeout), you can use the --retry-failed mode instead, which re‑processes only the entries in the failedUrls list. Together, these two resume modes turn crash recovery scraping from a manual chore into a one‑command operation.

Inside RTILA X’s Checkpoint & Resume System

The checkpoint itself is a structured snapshot that the engine updates continuously. Here’s what it captures:

  • nextUrlIndex – The zero‑based index of the next URL to crawl. If your list has 10,000 entries and the checkpoint shows 4,321, you know exactly where to resume.
  • variables – All runtime variables, including those set by set_variable, math_operation, string_operation, and list_operation. If your script counts products or accumulates values, those counts survive a crash.
  • memory – The full key‑value store that scripts can use with the memory helper inside run_script. This is where you might cache API tokens, page offsets, or deduplication hashes.
  • failedUrls – A running list of URLs that threw an error during processing. The engine marks a URL as failed only after exhausting proxy retries and CAPTCHA handling, so you don’t see false positives.

This structure is the foundation for both resume modes. When you launch a project with --resume, the engine reads the checkpoint, sets the internal URL pointer to nextUrlIndex, restores all variables and memory, and continues. The --retry-failed mode, on the other hand, ignores the progress pointer and instead feeds the failedUrls list back through the same processing pipeline—perfect for cleaning up after a flaky proxy rotation or a temporary server outage.

Because the checkpoint is a local file, it’s also portable. You can move it to another machine running RTILA X and resume there, as long as the project file and data sources are available. For teams that run multi‑device crawls, this means you can shift workload without losing progress. (Learn more about the checkpoint structure on our Checkpoints feature page and the How Checkpoints Work deep‑dive.)

Real‑World Test: Resuming After a Crash at Page 500

We don’t just design for failure—we test for it. In our lab, we set up a project that crawled a 1,000‑page e‑commerce catalog using RTILA X’s crawl_links command, combined with extract_data and infinite_scroll. The project was configured to write a checkpoint after every page (checkpointFrequency: 1) and to use a residential proxy pool with automatic dead‑proxy quarantine.

At page 500, we physically unplugged the Ethernet cable. The browser tab threw a network error, the engine detected the failure, and the run halted. We then plugged the cable back in, waited for the proxy health checks to clear, and relaunched the same project with --resume. The engine read the checkpoint, found nextUrlIndex at 500, restored all scraped product data from memory, and continued crawling from page 501 as if nothing had happened. The total data loss: zero pages, zero records.

That test mirrors what happens in the real world. A laptop running on battery might hibernate mid‑crawl. A cloud VM might get preempted. A browser profile might crash because of a memory‑heavy page. In every case, RTILA X’s checkpoint resume web scraping capability means your progress is never more than a few seconds old. The only thing you lose is the time it takes to restart the project—and with the --resume flag, that’s typically under a minute.

Configuring Checkpoint Frequency and Resume Modes

You control how often checkpoints are written through the project settings. The checkpointFrequency value (set in the project’s JSON configuration) lets you balance I/O overhead against recovery granularity. The default is every 10 pages, which works well for most crawls. If you’re scraping a site with heavy anti‑bot measures where every page load is expensive, you might set it to 1 to ensure you never have to re‑fetch a page. For high‑speed, low‑risk crawls, a frequency of 50 or 100 reduces disk writes without meaningfully affecting recovery.

Resume modes are command‑line flags you pass when launching a project:

  • --resume – Continues from the last successful checkpoint. Ideal after crashes, network drops, or manual stops.
  • --retry-failed – Re‑processes only the URLs in the failedUrls list. Perfect for cleaning up after a proxy outage or a temporary server error. (See the Retry Failed guide for a walkthrough.)

You can also combine both modes in a workflow. For example, you might first run --resume to finish the main crawl, then immediately run --retry-failed to mop up any stubborn URLs. Because RTILA X’s Task Scheduler supports post‑execution Trigger Chains, you can even automate this sequence: crawl → resume → retry failed → export to Google Sheets, all without touching the command line.

The checkpoint system also integrates with the crawl_links and infinite_scroll commands. When you use infinite_scroll, the engine tracks the scroll depth via a memory variable, so a resumed crawl doesn’t start from the top of the page. For crawl_links, the nextUrlIndex advances only after all items on a page have been extracted, ensuring you never miss a link.

How Checkpoints Protect Against Network Drops and Browser Failures

Network drops are the most common cause of large‑scale crawl failure. RTILA X’s proxy layer already includes TCP health checks and dead‑proxy quarantine (max 3 retries per URL), but even the best proxy can’t save you if your own internet goes down. When that happens, the engine’s built‑in error handling catches the unhandled network exception, writes a final checkpoint with the current state, and terminates gracefully. The next time you run --resume, the engine picks up from the exact URL that failed, re‑evaluates the proxy health, and continues.

Browser failures—tabs crashing, memory leaks, renderer hangs—are handled similarly. RTILA X monitors each browser context. If a context becomes unresponsive, the engine attempts a soft reset first. If that fails, it marks the current URL as failed, writes a checkpoint, and moves on. The --retry-failed mode then lets you re‑visit those URLs with a fresh browser context. This loop detection (3 detections → hard reset → CAPTCHA_LOOP_DETECTED flag) prevents infinite retries on genuinely broken pages.

Because the checkpoint writes to disk synchronously, even a sudden power loss won’t corrupt it. The file uses atomic writes: the engine writes to a temporary file, then renames it to the final checkpoint name only after the write is complete. In our stress tests, we’ve pulled the plug on machines running multi‑day crawls and never seen a corrupted checkpoint. That’s the kind of reliability you need when you’re scraping progress recovery for a client deliverable or a time‑sensitive dataset.

Conclusion: Your Scraping Progress, Always Safe

Checkpoint resume web scraping isn’t a luxury feature—it’s the difference between a tool you can trust and one you have to babysit. RTILA X’s local‑first architecture, combined with automatic state snapshots and two flexible resume modes, means you can start a crawl on Monday, close your laptop, and finish it on Wednesday without losing a single record. Whether you’re handling crash recovery scraping after a storm knocks out your power or simply pausing a long job to free up resources, the checkpoint system gives you total control.

In our testing, the resume process adds less than 2 seconds of overhead per restart, and the checkpoint files themselves rarely exceed a few megabytes—even for crawls with hundreds of variables. That efficiency is a direct result of our decision to keep everything local and to avoid cloud‑based orchestration that can add latency and cost. It’s one of the concrete differences between RTILA X and browser‑cloud platforms that charge per hour and lose your state the moment a container shuts down.

Ready to experience scraping progress recovery that actually works? Download RTILA X for Windows, macOS, or Linux from our download page. The Free Community plan includes unlimited runs, full Checkpoint & Resume functionality, and no credit card requirement—so you can test it on your own 1,000‑page crawl today.

RTILA X automates actions you could perform manually. Always review each platform’s Terms of Service and applicable data‑privacy laws before automating.

Sources and Verification

We stand by every claim in this article. Here’s where you can verify RTILA X’s track record and community feedback:

  • AppSumo reviews (2021): 116 reviews at 4.7/5 average. View reviews
  • Trustpilot: 5/5 rating from verified users. Read on Trustpilot
  • Product Hunt launch (2023): 5/5 rating from the community. See on Product Hunt
  • GitHub releases: First release April 10, 2020; ongoing changelog. Browse releases
  • GITEX Africa 2026: RTILA X exhibited in Marrakech.

FAQ

How does checkpoint resume web scraping work in RTILA X?

The engine automatically saves a checkpoint file after every page (or at your configured frequency). That file stores the next URL index, all variables, the memory store, and any failed URLs. When you restart the project with --resume, the engine reads that file and continues from the exact point where it stopped. No manual intervention, no duplicate pages.

Can I resume a project after my computer restarts or loses power?

Yes. Because the checkpoint is written to local disk using atomic file operations, it survives unexpected shutdowns, power losses, and forced reboots. RTILA X’s local‑first design means you don’t need an active internet connection to restore state—the checkpoint lives on your machine and is ready the moment you relaunch the project.

What happens if a few URLs keep failing even after a resume?

Use the --retry-failed resume mode. It reprocesses only the URLs that landed in the failedUrls list during the original run. You can combine it with fresh proxy settings or a different browser profile to get past stubborn blocks, without re‑crawling the entire site.

Written by the RTILA X team. We build and test every feature we write about on real websites, every week.

web scraping automation reliability checkpoint resume crash recovery RTILA X

Written by the RTILA X team, the engineers and product builders who develop RTILA X. This article reflects first-hand experience building and maintaining web automation software since April 2020.

Learn about our team