Skip to main content

Pooled Job Scraper

pooled-job-scraper is published on PyPI and provides a CLI for scraping business careers pages, extracting listings, and generating a unique delta against the April 2026 baseline dataset.

PyPI package:

Platform Links

How They Fit Together

  • jobpool.live is the open data pool and hydration surface.
    Use this scraper to discover and normalize job listings, then review unique delta rows before promoting data into the pool workflow.
  • mewannajob.com is the consumer-facing experience for browsing and using listings data.
    Data prepared through the pool process ultimately supports downstream job discovery use cases there.

Documentation Surfaces

  • Public pool context and hydration navigation: jobpool.live
  • Hydration docs in this repository: pool/hydration/docs/
  • Scraper implementation in this repository: scripts/generic_job_listings_scraper.py

Install

Windows

py -m pip install --upgrade pooled-job-scraper

WSL / Linux / macOS

python3 -m pip install --upgrade pooled-job-scraper

Usage

job-scraper \
  --business-url https://mossyhonda.hireology.careers/ \
  --company-name "Mossy Honda" \
  --output output/mossy-scraped.csv \
  --unique-output output/mossy-unique.csv

Live Progress + Rate Controls

The CLI now shows a live status bar with:

  • percent complete
  • ETA
  • observed request rate (req/s)
  • derived safe request rate from observed site limits (429, Retry-After, and X-RateLimit-* headers)

During runs, a persistent prompt stays active until completion:

rate-control>

Supported prompt commands:

  • rate <rps> (example: rate 1.2)
  • delay <seconds> (example: delay 0.8)
  • auto (return to adaptive pacing)
  • status (show current derived limits/rate)
  • help

Disable the interactive prompt when needed:

job-scraper \
  --business-url https://mossyhonda.hireology.careers/ \
  --company-name "Mossy Honda" \
  --no-control-prompt \
  --output output/mossy-scraped.csv \
  --unique-output output/mossy-unique.csv

Field Enrichment + Limits

The scraper now enriches records when source pages are sparse:

  • Derives job_summary when absent.
  • Derives job_posted_date from available text/URL patterns, with ingest date fallback.
  • Derives job_industries from curated company+industry hints, baseline company patterns, and keyword hints.
  • Applies sensible per-column word caps for listing-style data quality.

Default Cache Behavior

By default, unique rows are posted to:

  • https://jobpool.live/api/scrape-cache
job-scraper \
  --business-url https://mossyhonda.hireology.careers/ \
  --company-name "Mossy Honda" \
  --output output/mossy-scraped.csv \
  --unique-output output/mossy-unique.csv

The scraper infers user_name from local environment or git config and sends:

  • user_name
  • request_timestamp
  • source_business_urls
  • listings (standard listing fields plus any additional discovered fields)

Disable Cache Submission

Use the only cache-related flag when you need to skip cache persistence:

job-scraper \
  --business-url https://mossyhonda.hireology.careers/ \
  --company-name "Mossy Honda" \
  --disable-cache \
  --output output/mossy-scraped.csv \
  --unique-output output/mossy-unique.csv

Cache API

  • POST /api/scrape-cache stores a scrape request payload.
  • GET /api/scrape-cache?limit=25&user_name=<name> returns recent cached submissions.
  • GET /api/scrape-cache?leaderboard=1&leaderboard_limit=20 returns GitHub user leaderboard data with preprod_records and prod_records.

Publishing Flow

Publishing is automated through:

  • .github/workflows/publish-pypi.yml

Behavior:

  • Triggers on push/merge to main.
  • Builds distributions from pyproject.toml.
  • Checks whether the current version already exists on PyPI.
  • Publishes only when the version is new.
  • Skips cleanly when that version already exists.

To release a new version:

  1. Bump project.version in pyproject.toml.
  2. Merge to main.
  3. Wait for the publish workflow to complete.

Metadata

Release files for pooled-job-scraper 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pooled-job-scraper 0.1.3
File Size Uploaded Provenance
pooled_job_scraper-0.1.3.tar.gz 22.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pooled-job-scraper 0.1.3
File Interpreter ABI Platform
pooled_job_scraper-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 42.8 kB

Release files / pooled_job_scraper-0.1.3.tar.gz

Download URL pooled_job_scraper-0.1.3.tar.gz
Size 22.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a6e3a90893ae3af62945ea6b3548e74bd50bf33acb5928929fe6251eee96ddce
BLAKE2b-256 checksum
How to use checksums
00722af62eb451f36f983f896b60a92712b3b5e22589cc9b6ecd6e9bf869c8c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

Release files / pooled_job_scraper-0.1.3-py3-none-any.whl

Download URL pooled_job_scraper-0.1.3-py3-none-any.whl
Size 20.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4df86025f59a95ac36b5eee8621ba1e1a14c3afb5e8ab91a6c67b71d659954ed
BLAKE2b-256 checksum
How to use checksums
570032e306b2ef3a096bfd4744e9a2ed12330c8a61a4656a2d039909031c4200
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

Security for pooled-job-scraper 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pooled_job_scraper-0.1.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page