Emploitic APIemploitic.com ↗
Access Algerian job listings, company profiles, and filtering metadata from Emploitic via 9 endpoints. Search jobs by keyword, location, sector, and more.
What is the Emploitic API?
The Emploitic API provides access to Algeria's job market through 9 endpoints covering job search, company profiles, and metadata. The search_jobs endpoint returns paginated listings with title, contract type, work mode, job level, education level, and location — filterable by keyword and wilaya ID. Companion endpoints expose full job details, company hiring pages, and reference lists for all 58 Algerian wilayas, sectors, job functions, and experience levels.
curl -X GET 'https://api.parse.bot/scraper/22f932f3-b40d-4066-b6bb-0518fb2fbafd/search_jobs?page=1&query=d%C3%A9veloppeur&location=REDACTED_SECRET' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace emploitic-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Emploitic SDK — job search, company discovery, and metadata in Algeria."""
from parse_apis.Emploitic_API import Emploitic, CompanySummary, Company, JobDetail, Location, Sector, ResourceNotFound
client = Emploitic()
# Search for developer jobs, capped at 5 results
for job in client.jobs.search(query="développeur", limit=5):
print(job.title, job.work_mode, job.published_at)
for loc in job.location:
print(f" Location: {loc.label}")
# Get full details for a single job via .first()
job = client.jobs.search(query="marketing", limit=1).first()
if job:
detail = client.jobs.get(slug=job.alias)
print(detail.title, detail.open_positions, detail.expires_at)
for ct in detail.contract_type:
print(f" Contract: {ct.label}")
# Search companies and navigate to full profile
company = client.company_summaries.search(query="pharma", limit=1).first()
if company:
full_profile = company.profile()
print(full_profile.name, full_profile.state, full_profile.location.label)
# Construct a company by alias and list its open jobs
target = client.companysummary("dary-plus")
for job in target.jobs(limit=3):
print(job.title, job.company.name, job.published_at)
# List available wilayas (locations) and sectors for filtering
for loc in client.locations.list(limit=5):
print(loc.id, loc.label)
for sector in client.sectors.list(limit=5):
print(sector.id, sector.label)
# Typed error handling for a missing resource
try:
client.jobs.get(slug="nonexistent-job-slug-xyz")
except ResourceNotFound as exc:
print(f"Job not found: {exc.slug}")
print("exercised: jobs.search / jobs.get / company_summaries.search / profile / jobs / locations.list / sectors.list")
Search for job listings on Emploitic with optional keyword and location filters. Returns paginated results sorted by most recently published. Each result includes title, company, location, contract type, work mode, job level, education level, and profession.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword matching job title, company name, or description. |
| location | string | Location ID for filtering (obtain IDs from list_wilayas endpoint). |
{
"type": "object",
"fields": {
"results": "array of job listing objects with id, title, alias, description, location, contractType, workMode, jobLevel, educationLevel, profession, experienceYears, company, publishedAt",
"pagination": "object with page, pageSize, total, totalPages"
},
"sample": {
"data": {
"results": [
{
"id": "b0826939-9b19-481b-a677-e8d41273e256",
"alias": "marketing-analyst-growth-and-revenue-ops-1yq9b",
"title": "Marketing Analyst - Growth & Revenue Ops",
"company": {
"id": "a2f801c5-1d08-4cc7-94a7-238890d6025b",
"name": "Talenteo",
"alias": "talenteo",
"sector": {
"label": "Services"
}
},
"jobLevel": [
{
"label": "Confirmé / Expérimenté"
}
],
"location": [
{
"id": "4eb1955bb04a707a0309e4384386e847a6d4f1d4",
"label": "Draria, Daïra Draria, Alger, Algérie"
}
],
"workMode": "hybrid",
"profession": [
{
"label": "Marketing, Communication"
}
],
"description": "<p>Job description HTML...</p>",
"isAnonymous": false,
"publishedAt": "2026-06-02T11:02:06.966Z",
"contractType": [
{
"id": "09d66f6e5482d9b0ba91815c350fd9af3770819b",
"label": "CDI"
}
],
"educationLevel": [
{
"label": "Master 2, Ingénierat, Bac + 5"
}
],
"sort_timestamp": 1781110195027,
"experienceYears": [
{
"label": "1 À 2 Ans"
}
]
}
],
"pagination": {
"page": 1,
"total": 4876,
"pageSize": 20,
"totalPages": 244
}
},
"status": "success"
}
}About the Emploitic API
Job Search and Listing Detail
The search_jobs endpoint accepts a query string and a location parameter (a wilaya ID from list_wilayas) and returns paginated results including each listing's id, alias, title, contractType, workMode, jobLevel, educationLevel, and profession. For the complete picture on any listing, pass the alias to get_job_detail, which returns the full HTML description, expiresAt date, open position count, and any attached quiz questions alongside nested company and profession objects.
Company Profiles and Job Pages
search_companies lets you find companies by name keyword and returns each company's sector, size, location, and active jobs count. Passing a company alias to get_company_profile returns social links, companySite tab layout, and all structured metadata. get_company_jobs retrieves the paginated job board for that company, using the same response shape as search_jobs.
Reference Metadata
Four metadata endpoints provide the controlled vocabulary used across the platform. list_wilayas returns all 58 Algerian provinces with ISO 3166-2 codes and admin level metadata — these IDs are required for location filtering in search_jobs. list_sectors and list_job_functions return the industry and profession taxonomies used to classify companies and postings. list_job_levels returns experience/seniority tiers. Each metadata response includes id, label, lang, and a metadata object with additional attributes like parentId for hierarchical job functions.
The Emploitic API is a managed, monitored endpoint for emploitic.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when emploitic.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official emploitic.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Algerian job postings by wilaya to build a regional employment dashboard.
- Track a company's active job count over time using
search_companiesandget_company_profile. - Filter entry-level postings in a specific sector by combining
list_job_levels,list_sectors, andsearch_jobs. - Extract full job descriptions from
get_job_detailto train or evaluate a job-matching model on Arabic/French text. - Monitor when specific job listings expire using the
expiresAtfield fromget_job_detail. - Build a company research tool that surfaces sector, size, location, and social links from
get_company_profile. - Populate a job board filter UI with canonical wilaya, sector, and job function data from the metadata endpoints.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Emploitic have an official developer API?+
How does location filtering work in `search_jobs`?+
location parameter takes a wilaya ID, not a text string. Call list_wilayas first to retrieve all 58 Algerian province IDs and their ISO 3166-2 codes, then pass the relevant ID to search_jobs.Does `search_jobs` support filtering by sector, job function, or experience level directly?+
search_jobs filters by query keyword and location only. The list_sectors, list_job_functions, and list_job_levels endpoints provide the reference data, but server-side filtering by those dimensions is not exposed in the search endpoint. You can fork this API on Parse and revise it to add those filter parameters.What job detail fields does `get_job_detail` return beyond the search results?+
get_job_detail adds the full HTML description (responsibilities and requirements), expiresAt expiration date, open position count, attached quiz questions, and expanded nested objects for company, profession, job level, and location — fields that the paginated search results truncate or omit.