Python
Python 3.9+ · Pydantic models · sync + async
Node.js
Node 18+ · TypeScript 5+ · zero dependencies
.NET
.NET 6+ / 8+ · IAsyncEnumerable · DI-ready
Feature Comparison
All three SDKs share a common feature set:| Feature | Python | Node.js / TS | .NET |
|---|---|---|---|
| Jobs Search | ✅ | ✅ | ✅ |
| Advanced Query (AND/OR filters) | ✅ | ✅ | ✅ |
| Jobs Feed (cursor-based) | ✅ | ✅ | ✅ |
| Expired Jobs | ✅ | ✅ | ✅ |
| Auto Apply | ✅ | ✅ | ✅ |
| Geocode | ✅ | ✅ | ✅ |
| Auto-pagination | ✅ typed iterator | ✅ async generator | ✅ IAsyncEnumerable |
| Retry with exponential backoff | ✅ | ✅ | ✅ |
| Full type definitions | ✅ Pydantic | ✅ TypeScript | ✅ C# records |
| Async support | ✅ sync + async | ✅ native async | ✅ native async |
Python
Requirements
- Python 3.9+
- Dependencies:
httpx,pydantic
Installation
Quick Example
Advanced Usage
Auto-Pagination
Auto-Pagination
Iterate over all matching jobs without managing page numbers. The SDK fetches
the next page automatically when the current one is exhausted.The async variant works identically:
Error Handling
Error Handling
The SDK raises typed exceptions so you can handle specific failure modes.
Async Client
Async Client
Use
AsyncJoboClient for non-blocking I/O in async frameworks like
FastAPI or Django Channels.Features
- Pydantic models — every response is a fully-typed Pydantic model with IDE autocompletion
- Sync + async — choose
JoboClient(sync/httpx) orAsyncJoboClient(async/httpx) - Typed iterator pagination —
search_iter()/async_search_iter()lazily page through all results - Automatic retries — transient errors (429, 500, 502, 503, 504) are retried with exponential backoff
Links
Node.js / TypeScript
Requirements
- Node.js 18+
- TypeScript 5+ (optional but recommended)
- Zero runtime dependencies
Installation
Quick Example
Advanced Usage
Auto-Pagination with Async Generators
Auto-Pagination with Async Generators
Use You can also collect all results into an array:
searchIter() to stream through every page of results automatically.Error Handling
Error Handling
Catch typed error classes for granular control.
Custom Fetch / Proxy
Custom Fetch / Proxy
Pass a custom
fetch implementation for proxies, logging, or test mocking.Features
- Zero dependencies — uses the built-in
fetchAPI (Node 18+) - Full TypeScript types — every request and response is strongly typed
- Async generator pagination —
searchIter()yields jobs across pages withfor await...of - Automatic retries — transient errors are retried with exponential backoff and jitter
Links
.NET
Requirements
- .NET 6.0+ or .NET 8.0+
- No additional dependencies beyond
System.Net.Http
Installation
Quick Example
Advanced Usage
Auto-Pagination with IAsyncEnumerable
Auto-Pagination with IAsyncEnumerable
Stream through every page of results using C#‘s native This is memory-efficient — only one page is loaded at a time.
await foreach.ASP.NET Core Dependency Injection
ASP.NET Core Dependency Injection
Register the client in your Then inject it into your controllers or services:
IServiceCollection for constructor injection.Error Handling
Error Handling
Catch typed exceptions for precise error handling.
Features
- IAsyncEnumerable pagination —
SearchEnumerableAsyncstreams pages lazily withawait foreach - ASP.NET Core DI — first-class
AddJoboClient()extension for dependency injection - C# records & nullable annotations — every model is a record with full nullability annotations
- Automatic retries — configurable retry policy with exponential backoff for transient HTTP errors
Links
Shared Capabilities
All three SDKs share the same design principles and feature guarantees.
Auto-Pagination
Iterate through all results without manual page management. Each SDK uses
its language’s native streaming primitive.
Retry & Backoff
Transient errors (429, 5xx) are automatically retried with exponential
backoff and jitter. Configurable max retries.
Type Safety
Every request parameter and response field is fully typed — Pydantic models
(Python), TypeScript interfaces (Node), C# records (.NET).
REST API (No SDK)
Don’t see your language? The REST API works with any HTTP client. Authenticate with theX-Api-Key header:

