Discover/Emploi API
live

Emploi APIemploi.ma

Access Moroccan job listings, company profiles, and job categories from Emploi.ma. Search jobs by keyword, category, or company with 6 endpoints.

Endpoint health
verified 2d ago
get_job_detail
search_jobs
get_featured_jobs
list_job_categories
list_companies
6/6 passing latest checkself-healing
Endpoints
6
Updated
26d ago

What is the Emploi API?

The Emploi.ma API provides access to Morocco's job board through 6 endpoints covering job search, full job details, company profiles, and category listings. The search_jobs endpoint accepts keyword, category, and company filters and returns up to 25 paginated results per page, each with title, location, experience level, and employment type. get_job_detail delivers the complete posting including salary range, required qualifications, and posting date.

Try it
Page number (0-based) for pagination.
Search keyword to filter job listings (e.g. 'dev', 'comptable'). Omitting returns all jobs.
Job category (métier) ID filter. Valid IDs can be obtained from list_job_categories endpoint.
Company NID filter. Valid NIDs can be obtained from list_companies endpoint.
api.parse.bot/scraper/879833ad-4dce-4db8-9d64-d07b11b916ec/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/879833ad-4dce-4db8-9d64-d07b11b916ec/search_jobs?page=0&query=dev&metier_id=1127&company_nid=8979235' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 emploi-ma-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: Emploi.ma Job Board SDK — browse categories, search jobs, drill into details."""
from parse_apis.emploi_ma_job_board_api import EmploiMa, CompanyNotFound

client = EmploiMa()

# List job categories to find one for filtering
categories = client.categories.list(limit=5)
for cat in categories:
    print(cat.name, cat.id, cat.count)

# Search tech jobs using a keyword
job = client.jobsummaries.search(query="dev", limit=1).first()
if job:
    print(job.title, job.company_name, job.location)
    # Drill into the full detail
    detail = job.details()
    print(detail.description[:100], detail.employment_type, detail.experience_level)

# Browse featured jobs from the homepage
for featured in client.featuredjobs.list(limit=3):
    print(featured.title, featured.company_name, featured.posted_date)

# List companies and get a profile
company_summary = client.companysummaries.list(limit=1).first()
if company_summary:
    try:
        profile = company_summary.details()
        print(profile.name, profile.description[:80], profile.criteria)
    except CompanyNotFound as exc:
        print(f"Company not found: {exc}")

print("exercised: categories.list / jobsummaries.search / details / featuredjobs.list / companysummaries.list / companysummaries.details")
All endpoints · 6 totalmissing one? ·

Search for job listings on Emploi.ma with optional filters. Returns paginated results with up to 25 jobs per page. Results include title, company, location, experience level, employment type, and a description snippet. Paginates via a 0-based page counter.

Input
ParamTypeDescription
pageintegerPage number (0-based) for pagination.
querystringSearch keyword to filter job listings (e.g. 'dev', 'comptable'). Omitting returns all jobs.
metier_idstringJob category (métier) ID filter. Valid IDs can be obtained from list_job_categories endpoint.
company_nidstringCompany NID filter. Valid NIDs can be obtained from list_companies endpoint.
Response
{
  "type": "object",
  "fields": {
    "jobs": "array of job listing objects with title, url, company_name, company_url, description_snippet, location, experience_level, education_level, employment_type, and posted_date",
    "count": "integer total number of jobs returned on this page"
  },
  "sample": {
    "data": {
      "jobs": [
        {
          "url": "https://www.emploi.ma/offre-emploi-maroc/comptable-confirmee-casablanca-9313098",
          "title": "Comptable Confirmé(e) - Casablanca",
          "location": "Casablanca-Mohammedia",
          "company_url": "https://www.emploi.ma/recruteur/9312183",
          "company_name": "Jnanealfida",
          "employment_type": "CDI & CDD",
          "experience_level": "Expérience entre 2 ans et 5 ans et plus",
          "description_snippet": "Nous recherchons des professionnels qualifiés..."
        }
      ],
      "count": 25
    },
    "status": "success"
  }
}

About the Emploi API

Job Search and Listings

The search_jobs endpoint accepts four optional parameters: query for keyword filtering (e.g. dev, comptable), metier_id for category filtering, company_nid for narrowing to a specific employer, and page for 0-based pagination. Each result in the jobs array includes title, company_name, company_url, location, experience_level, description_snippet, and a url you can pass directly to get_job_detail. The count field tells you how many results were returned on that page.

Full Job Details and Company Profiles

get_job_detail takes a full Emploi.ma posting URL and returns a structured object with salary (min, max, currency — or null when not disclosed), location (region, city, remote flag), languages, posted_date, job_category, requirements as an array of strings, and the full description text. For company research, get_company_profile accepts an NID and returns name, description, and a criteria object covering fields such as Ville, Pays, Secteur d'activité, and Site Internet.

Discovery Endpoints

Three supporting endpoints help you build filters and stay current. list_job_categories returns every available métier with its id, name, and live count of open positions — feed those IDs into search_jobs as metier_id. list_companies returns a directory of featured employers with name, nid, and url, providing the company_nid values for search filtering. get_featured_jobs pulls the current homepage snapshot of promoted listings with title, url, company_name, posted_date, and location — useful for surfacing high-visibility postings without a search query.

Reliability & maintenanceVerified

The Emploi API is a managed, monitored endpoint for emploi.ma — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when emploi.ma 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 emploi.ma 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.

Last verified
2d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Morocco-focused job aggregator filtered by city or region using the location fields from search_jobs.
  • Track salary ranges for specific roles in Morocco by collecting salary.min and salary.max from get_job_detail over time.
  • Monitor a target company's open positions by passing its company_nid to search_jobs on a schedule.
  • Classify job postings by sector using list_job_categories counts to identify which métiers have the most active hiring.
  • Enrich a recruiter CRM with company sector, city, and website data from get_company_profile.
  • Surface promoted listings for a job alert newsletter using get_featured_jobs as a daily snapshot.
  • Analyze required qualifications across a job category by batching get_job_detail calls for all jobs matching a metier_id.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Emploi.ma have an official developer API?+
Emploi.ma does not publish an official public developer API or documented data access program. This API is the practical way to access its job listings and company data programmatically.
What does `get_job_detail` return that `search_jobs` does not?+
search_jobs returns a summary per listing: title, company, location, experience level, and a description snippet. get_job_detail adds the full description text, the requirements array, a structured salary object (min, max, currency), the remote flag inside location, required languages, posted_date, and job_category. If salary is not disclosed on the posting, the salary field is null.
How does pagination work in `search_jobs`?+
The page parameter is 0-based: passing page=0 (or omitting it) returns the first page, page=1 the second, and so on. Each page returns up to 25 results. The count field in the response reflects how many jobs are on the current page, not the total across all pages. There is no total-count field, so you must paginate until a page returns fewer than 25 results or an empty jobs array.
Does the API return job application links or allow submitting applications?+
The API returns the posting url on Emploi.ma and full job details, but does not expose application form data or support submitting applications. You can fork this API on Parse and revise it to add an endpoint that retrieves application-specific fields from individual posting pages.
Does `list_companies` return all companies on Emploi.ma?+
list_companies returns a featured/directory page of companies — it is not a full index of every employer that has posted on the site. Some companies that appear in job listings may not be present in this list. You can fork this API on Parse and revise it to add paginated company listing endpoints to increase coverage.
Page content last updated . Spec covers 6 endpoints from emploi.ma.
Related APIs in JobsSee all →
emploitic.com API
Search and browse job listings and company profiles from Emploitic, with the ability to filter by wilayas, sectors, job functions, and experience levels. Access detailed job information and company hiring data to explore career opportunities and research potential employers.
ethiojobs.net API
Search and explore job listings across Ethiopian companies with detailed job information, categories, locations, and industries. Discover company profiles, view their open positions, and find similar job opportunities tailored to your preferences.
hellowork.com API
Search and browse job listings and company profiles on HelloWork, France's leading job board. Filter by keyword, location, contract type, salary, and more.
cv.lv API
Search for job listings on CV.lv and access detailed job descriptions, categories, locations, and information about top employers. Find the right opportunity by browsing available positions across different industries and regions.
welcometothejungle.com API
Search and discover job postings and company information from Welcome to the Jungle, including detailed job listings, company profiles with employee statistics and social links, and the ability to browse all available positions. Find the perfect role by searching jobs and companies, then access comprehensive details about positions and organizations in one place.
fr.indeed.com API
Search job listings and get detailed information about positions, companies, and alternance opportunities on Indeed France, all in one place. Access comprehensive company profiles and job details to find your next career move or research employers.
job.at API
Search and browse jobs on Austria's job.at platform, view detailed job listings with salary info and company details, and use autocomplete features to refine your search by location and keywords. Discover featured positions, explore job categories, and find related job titles to expand your career opportunities.
totaljobs.com API
Search and browse job listings from across the UK on TotalJobs, then access detailed information about specific positions including requirements, salary, and application details. Quickly compare opportunities and find roles that match your criteria.