Skip to main content

LinkedInWebScraper

CI Docs Docs site Release PyPI version Python versions License

LinkedInWebScraper is a production-minded Python library and scheduled job runner for collecting LinkedIn job listings, normalizing the data, persisting run history, and exporting reusable datasets.

Highlights

  • Canonical package namespace under linkedin_web_scraper
  • Typed programmatic config for single scrapes and TOML runtime config for CLI and scheduled runs
  • Managed artifacts under artifacts/jobs, artifacts/logs, and artifacts/state
  • SQLite-backed persistence through a clean application storage port
  • Package CLI with scrape once, scrape daily, export, and --dry-run
  • Optional OpenAI enrichment built on the current Responses API
  • Runnable examples under examples/
  • Auto release automation that waits for green CI and Docs runs on main

Install

pip install LinkedInWebScraper
pip install LinkedInWebScraper[openai]
pip install -e .[dev]

Quickstart

from linkedin_web_scraper import (
    JobScraperConfig,
    LinkedInJobScraper,
    RemoteType,
    configure_logging,
)

logger = configure_logging(filename="example.log")
config = JobScraperConfig(
    position="Data Analyst",
    location="San Francisco",
    remote=RemoteType.REMOTE,
)

jobs = LinkedInJobScraper(logger=logger, config=config).run()
print(jobs.head())

Examples

Run the example scripts from examples/:

python examples/example.py
python examples/example_advanced_config.py
python examples/example_openai.py

The OpenAI example requires OPENAI_API_KEY in the environment.

CLI Runtime

linkedin-webscraper scrape once --dry-run
linkedin-webscraper scrape daily
linkedin-webscraper export --run-id <run-id>

Use runtime.example.toml as the template for a real runtime.toml. The root runtime scripts remain available for the daily and once workflows:

python main.py
python process_ds_jobs.py

Docs

Development

Run the local gate before risky pushes or merges:

python -m tox -e preflight

For a faster smoke-only path:

python -m tox -e smoke

The detailed validation matrix and release flow live in docs/development/validation.md and docs/development/release-and-automation.md.

License

This project is licensed under the MIT License.

Release files for LinkedInWebScraper 1.1.1

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

Source distribution (sdist)

Source distribution for LinkedInWebScraper 1.1.1
File Size Uploaded
linkedinwebscraper-1.1.1.tar.gz 55.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for LinkedInWebScraper 1.1.1
File Interpreter ABI Platform
linkedinwebscraper-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size:107.8 kB

Release files / linkedinwebscraper-1.1.1.tar.gz

Download URL linkedinwebscraper-1.1.1.tar.gz
Size 55.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2ad0b214a1e577608d7c44db4d2f07d6742f8c383b3cdd15631c0979feb2faae
BLAKE2b-256 checksum
How to use checksums
53835343f06660b813a7c9025a4a6533122dbdbd1e9022f36edfd1a1f1422c96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 22, 2026.

Transparency log

Release files / linkedinwebscraper-1.1.1-py3-none-any.whl

Download URL linkedinwebscraper-1.1.1-py3-none-any.whl
Size 52.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e00c939d39ca729656acbd9a46e02de4c0a73e236efdd2433ff7ce56262fdf8e
BLAKE2b-256 checksum
How to use checksums
67241ab919241a73e0711338ed6faa984bf7adf5a62475168c5bafe1c6e3abfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Mar 22, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.1

2 release files

0.2

2 release files

0.1

2 release files

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