Skip to main content
DeltaFetch skips pages that haven’t changed since the last crawl. First crawl scrapes everything; subsequent crawls only process new or modified pages.

How It Works

1

First crawl

Scrapes all pages and stores content hashes
2

Subsequent crawls

Compares page hashes before processing
3

Skip unchanged

Pages with matching hashes are skipped
4

Process changed

Only new/modified pages are scraped
Efficiency gains:
  • Reduces bandwidth usage
  • Faster crawl times
  • Lower server load
  • Cost savings on large-scale crawls

Configuration

Basic Setup

spider.json
That’s it! DeltaFetch is now enabled for your spider.

Custom Storage Location

By default, hashes are stored in .scrapy/deltafetch/<spider_name>/. You can customize this:
spider.json

Reset Options

Via configuration (recommended for testing):
spider.json
Via file system:

Complete Example

News Site with Daily Updates

news_spider.json
First crawl (Monday):
Second crawl (Tuesday):

Blog with Weekly Updates

blog_spider.json
Weekly cron job:
Only new posts from the past week are scraped.

Combining with Other Features

DeltaFetch + Cloudflare Bypass

spider.json
Skip unchanged pages while handling Cloudflare protection.

DeltaFetch + Sitemap

spider.json
Crawl sitemap URLs but skip unchanged pages.

DeltaFetch + Proxy

spider.json
Combine incremental crawling with smart proxy usage.

Monitoring

Check Log Output

Look for DeltaFetch debug messages:
These indicate pages being skipped.

Check Storage

Statistics

Scrape stats show skipped items:

Troubleshooting

Not Skipping Any Pages

1

Verify setting is enabled

Check DELTAFETCH_ENABLED: true in spider settings
2

Check if first crawl

First crawl never skips (nothing to compare against)Run crawl again to see skipping behavior
3

Verify storage directory exists

If directory is empty, first crawl hasn’t completed yet
4

Check hash database has data

File should have non-zero size

Skipping Pages That Should Be Re-Crawled

Force re-crawl by deleting hash database or using DELTAFETCH_RESET: true (see Reset Options above).

Pages Changed But Not Detected

Possible causes:
  1. Content hash unchanged
    • Minor changes (timestamps, ads) may not affect core content hash
    • DeltaFetch compares content body, not dynamic elements
  2. Cache issues
    • Clear hash database and re-crawl
  3. Spider extracts different content
    • Check if selectors are targeting correct content

Storage Growing Too Large

Check size:
Large storage indicates:
  • Many unique pages crawled (normal)
  • Consider periodic cleanup for old sites
Cleanup old data:

Limitations

  1. First crawl is always full - no prior hashes to compare
  2. Hash database is local - not synced across machines
  3. Content-based detection - minor metadata changes (timestamps, ads) may not trigger re-crawl

Use Cases

Ideal for:
  • News sites - Daily updates with 1000s of articles (95-98% reduction)
  • Product catalogs - Skip unchanged prices, only scrape new products and updates
  • Job boards - Focus on new postings, skip filled positions
  • Documentation sites - Detect updated pages, efficient monitoring

Best Practices

1

Enable for recurring crawls

DeltaFetch is most useful for spiders that run repeatedly (daily, weekly, monthly). Not needed for one-time crawls.
2

Monitor storage growth

Periodically check and clean old hash databases
3

Test reset behavior

Use DELTAFETCH_RESET: true to test full re-crawl behavior

Performance Metrics

Example: News site with 5000 articles Typical efficiency gains:
  • Daily updates: 95-99% reduction in pages processed
  • Weekly updates: 90-95% reduction
  • Monthly updates: 80-90% reduction

Checkpoint Resume

Pause and resume long crawls

Queue Processing

Batch process multiple websites

Cloudflare Bypass

Handle protected sites