Prompt

What's the best way to scrape job listings?

Latest observation

Jul 15, 2026 · OpenAI APIWeb search: off

The best way is usually not to scrape random job sites directly, but to use the most reliable and compliant source available in this order:

1) Use official APIs or feeds first

Many job boards and companies offer:

  • Public APIs
  • RSS/Atom feeds
  • Sitemaps
  • ATS endpoints from systems like Greenhouse, Lever, Workday, Ashby, SmartRecruiters

This is the cleanest approach because it’s:

  • more stable
  • less likely to break
  • often allowed by the provider
  • easier to normalize

2) Scrape company career pages when permitted

If there’s no API, scrape the company’s own careers pages, but:

  • check robots.txt
  • review terms of service
  • throttle requests
  • identify your crawler with a proper user agent
  • avoid unnecessary load

3) Build a resilient scraper if you must scrape HTML

For pages that are JS-heavy or dynamically loaded:

  • use Playwright or Puppeteer for rendering
  • prefer requests/HTTP parsing when possible for speed and simplicity
  • extract structured data like:
    • JSON-LD
    • schema.org JobPosting
    • embedded JSON blobs
    • meta tags

4) Normalize and deduplicate

Job data comes in many formats, so store a standard schema:

  • title
  • company
  • location
  • remote/hybrid
  • salary range
  • employment type
  • description
  • apply URL
  • source
  • posted date

Then deduplicate by:

  • title + company + location
  • canonical job ID if present
  • apply URL

5) Make it maintainable

Good scraping systems usually have:

  • per-site adapters/parsers
  • retries and rate limiting
  • change detection
  • monitoring for layout changes
  • logging and alerting on parse failures

6) Be careful about legality and ethics

Job listings may be copyrighted or protected by site terms. Best practice:

  • prefer licensed or allowed sources
  • don’t bypass access controls
  • don’t overwhelm servers
  • honor takedowns and robots policies

Recommended stack

A practical stack is:

  • Python + requests + BeautifulSoup/lxml for simple pages
  • Playwright for dynamic sites
  • Scrapy if you need large-scale crawling
  • Postgres for storage
  • Redis + Celery/RQ for scheduling and queues

If you want, I can help you with:

  1. a scraping architecture for job listings,
  2. a Python example for a specific job board, or
  3. a schema for storing job data.

Observation history

Unlock observation history

Create a free Obsurfable account to unlock historical responses, model comparisons, and deeper brand intelligence.

How did Obsurfable measure this prompt?

Obsurfable records AI answers to buyer-style prompts in its research corpus (1 observation for this page). Metrics are distributions over observations, not a single static ranking.

Which AI systems does Obsurfable collect answers from?

OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, and Meta AI.