Skip to main content

🔍 PyWuzzuf

An unofficial, async-first Python client for the Wuzzuf Jobs API

python - 3.12+ UV Prek - Ready Async - Ready License - MIT

📖 Read The Documentation


📑 Table of Contents


⚠️ Important Considerations

Rate Limiting & Ethics

  • Client-side filtering means you may fetch more pages than requested to reach your target count
  • Be respectful with request volumes — this tool is for educational and personal projects, not for scraping at scale
  • Consider implementing delays between requests for larger operations

🔧 Core Features

Feature What It Does
🎭 Browser Impersonation Uses curl_cffi to mimic real Chrome/Firefox TLS fingerprints. No more 403s.
🔄 Smart Pagination Automatic retries with exponential backoff. Control flow with STOP/CONTINUE/RETRY.
✅ Client-Side Filtering Enforces your criteria locally — no more irrelevant results slipping through.
📊 Data Quality Audits Built-in detection for missing companies, salaries, and malformed entries.
🔒 Type Safety Full Pydantic v2 models with IDE autocomplete and validation.

🚀 Installation

One-liner with uv (recommended):

uv add pywuzzuf

Classic pip:

pip install pywuzzuf

Poetry:

poetry add pywuzzuf

Requires Python 3.12+


🎯 Quick Start

Get the first 10 "Python Developer" jobs posted in the last 24 hours:

import asyncio
from pywuzzuf import WuzzufClient, SearchFilters, DateRange

async def main():
    async with WuzzufClient() as client:
        results = await client.jobs.search("Python Developer") \
            .filter(SearchFilters(posted_within=DateRange.LAST_24_HOURS)) \
            .limit(10) \
            .all()

        for job in results.items:
            company = job.company.attributes.name if job.company else "Unknown"
            print(f"📌 {job.attributes.title} @ {company}")
            
            if job.quality.has_anomalies:
                print(f"   ⚠️  Missing: {', '.join(job.quality.missing_fields)}")

asyncio.run(main())

Output:

📌 Senior Python Engineer @ Instabug
📌 Backend Python Developer @ Paymob
   ⚠️  Missing: salary_range
📌 Python Team Lead @ Vezeeta
...

🤝 Contributions

Metadata

Release files for pywuzzuf 0.1.0

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

Source distribution (sdist)

Source distribution for pywuzzuf 0.1.0
File Size Uploaded
pywuzzuf-0.1.0.tar.gz 24.9 kB Details

Built distribution (wheel)

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

Total release size: 55.1 kB

Release files / pywuzzuf-0.1.0.tar.gz

Download URL pywuzzuf-0.1.0.tar.gz
Size 24.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c5bb1690a6a2abf228225e9d31dc3f97f395eccef70ba185289cbe993c9f65ce
BLAKE2b-256 checksum
How to use checksums
dd0b2a0334f61b4108c4a8e3b7f6c0076519c77105d1758e29cfcb9a4ce869be
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 28, 2026.

Transparency log

Release files / pywuzzuf-0.1.0-py3-none-any.whl

Download URL pywuzzuf-0.1.0-py3-none-any.whl
Size 30.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
994a54153aef4b6e9174db044c1b221960cd612c3572c4629e7cbfaf7fab20fb
BLAKE2b-256 checksum
How to use checksums
c862d609b8fc2c6bafdfdb8fe52c2084ed210806bd1f04e8c86c43f6956536cb
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 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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