Skip to main content

Jobs

A job is a single execution of a scrape using a strategy. Jobs run asynchronously in the background, extract data according to the strategy’s rules, and store the results for retrieval.

What is a job?

When you create a job, Meter:
  1. Fetches the target URL
  2. Applies the strategy’s extraction logic (CSS selectors)
  3. Extracts structured data
  4. Generates content signatures for change detection
  5. Stores results for retrieval
Jobs are the execution layer—strategies define what to extract, jobs execute the extraction.

Job lifecycle

Job statuses:
  • pending: Job is queued, waiting to start
  • running: Job is currently executing
  • completed: Job finished successfully, results available
  • failed: Job encountered an error

Creating jobs

Basic job creation

Waiting for completion

Jobs run asynchronously. Use wait_for_job() to poll until completion:

With timeout

Set a timeout to avoid waiting forever:

Checking job status

Poll job status manually:

Job results

Completed jobs contain extracted data in the results field:

Job metadata

Jobs also include metadata for change detection:
  • content_hash: Hash of the extracted content for quick comparison
  • structural_signature: Structural fingerprint for detecting layout changes
  • item_count: Number of items extracted

Listing jobs

All jobs

Filter by strategy

Filter by status

Comparing jobs

Compare two jobs to detect changes:
Use job comparison to build custom change detection logic beyond what’s provided by schedules.

Strategy history

Get a timeline of all jobs for a strategy:
The has_changes field indicates if content changed compared to the previous job.

Advanced features

The following features require feature gating. Contact mckinnon@meter.sh to request access.

Antibot bypass

Meter can handle antibot protection on pages that use common bot detection systems. When enabled for your account, jobs automatically attempt to bypass antibot measures when fetching pages. This is useful for scraping sites that use:
  • Cloudflare Bot Management
  • PerimeterX
  • DataDome
  • Other common antibot solutions
No code changes are required—antibot handling is applied automatically when enabled for your account.

LLM summary

Jobs can include an LLM-generated summary of the page content. This is useful for:
  • Quick content overviews without parsing full results
  • Change detection at a semantic level
  • Building RAG pipelines with scraped content
When enabled, completed jobs include a summary field with the AI-generated summary of the extracted content.

Best practices

Jobs can fail if websites are down, block requests, or change structure:
Different sites have different response times:
Jobs are stored indefinitely. For large-scale monitoring:
Job deletion is not yet implemented but is planned.
For one-off scrapes, wait_for_job() is convenient:
For monitoring, use schedules instead of manually creating jobs.

Troubleshooting

Possible causes:
  • High server load
  • Job queue backlog
Solutions:
  • Wait longer (jobs typically complete in 10-60 seconds)
  • Check status manually: client.get_job(job_id)
  • Contact support if stuck for >5 minutes
Cause: Website HTML structure changedSolution: Generate a new strategy:
Problem: Job completes but results is emptyPossible causes:
  • Strategy selectors don’t match the page
  • Page content is dynamically loaded (JavaScript)
Solutions:
  • Regenerate strategy for the current page structure
  • For JS-heavy sites, contact support (browser automation coming soon)

Next steps

Set Up Schedules

Automate job execution with recurring schedules

Change Detection

Learn how Meter detects content changes

Python SDK Reference

Explore all job methods

REST API Reference

View job endpoints in the REST API

Need help?

Email me at mckinnon@meter.sh