EthioJobs APIethiojobs.net ↗
Access Ethiopian job listings, company profiles, categories, and locations via the EthioJobs API. Search, filter, and retrieve full job and company details.
What is the EthioJobs API?
The EthioJobs API provides access to Ethiopian job market data across 9 endpoints, covering job search, company profiles, and reference lookups. The search_jobs endpoint accepts keyword queries and filters by career level, employment type, location, and category, returning paginated results with publication and expiry dates. Companion endpoints expose full job descriptions, company details, and category or location reference lists for building accurate filter chains.
curl -X GET 'https://api.parse.bot/scraper/18f6a24b-3d12-44c1-a231-3678d07f5169/search_jobs?page=1&limit=5&query=engineer&state_id=1&category_id=eyJpdiI6Ijl2VDRieWhQU3pqZ08rWlRycFdDTFE9PSIsInZhbHVlIjoiTEtQT0VDdFcwcEtONmsxM1lSS2NMdz09IiwibWFjIjoiYjg2ZmQ5ZGJlNjExYWEzN2FjNGY5NjZkNDQ4NzA0Y2ZkMGQxNWRmZWNmZTRhYzQyNTUyZTAzZDI1ZTQwYTE2YyIsInRhZyI6IiJ9&featured=false' \ -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 ethiojobs-net-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.
from parse_apis.ethiojobs_api import EthioJobs, Featured, JobSummary, Company
client = EthioJobs()
# Search for featured job listings
for job in client.jobsummaries.search(query="engineer", featured=Featured.TRUE, limit=5):
print(job.title, job.state, job.date_published)
# List all categories available for filtering
for category in client.categories.list(limit=10):
print(category.id, category.name)
# List featured companies and explore their details
for company_summary in client.companysummaries.list(featured=Featured.FALSE, limit=3):
print(company_summary.name, company_summary.active_jobs_count)
detail = company_summary.details()
print(detail.email, detail.website)
Full-text search over Ethiopian job listings with optional filters by category, location, career level, employment type, and featured status. Paginates via page number. Returns job summaries including title, company, location, categories, and publication/expiry dates.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Number of results per page. |
| query | string | Search keyword to match against job titles and descriptions. |
| type_id | string | Filter by employment type ID (encrypted ID). |
| featured | string | Filter by featured status: 'true' or 'false'. |
| level_id | string | Filter by career level ID (encrypted ID). |
| state_id | string | Filter by state/location ID (numeric ID from list_locations). |
| category_id | string | Filter by category ID (encrypted ID from list_categories). |
{
"type": "object",
"fields": {
"items": "array of job summary objects",
"total": "integer, total number of results",
"per_page": "integer, results per page",
"last_page": "integer, total number of pages",
"current_page": "integer, current page number"
},
"sample": {
"data": {
"items": [
{
"id": "eyJ...",
"slug": "8VjqloHPwW-...",
"type": 8,
"level": "2",
"state": "Addis Ababa",
"title": "Administrative and Financial Grant Officer",
"company": {
"id": "eyJ...",
"logo": "files/pictures/fw.png",
"name": "Expertise France",
"slug": "expertise-france"
},
"catalogs": [
{
"id": "eyJ...",
"name": "Accounting and Finance"
}
],
"date_expiry": "2026-07-11T23:59:59.000000Z",
"location_type": "Office",
"date_published": "2026-06-10T14:35:26.000000Z",
"application_method": "CAREER-PAGE-LINK"
}
],
"total": 881,
"per_page": 12,
"last_page": 74,
"current_page": 1
},
"status": "success"
}
}About the EthioJobs API
Job Search and Detail
The search_jobs endpoint is the main entry point for querying live job listings. It accepts optional parameters including query (keyword), category_id, level_id, type_id, state_id, and featured, and returns a paginated array of job objects. Each result includes id, title, slug, type, date_published, date_expiry, level, state, catalogs, and a truncated description. For full details — including requirement, how_to_apply, and associated company info — call get_job_detail with the encrypted job_id from those results. The get_similar_jobs endpoint takes the same job_id and returns other listings in the same category.
Company Data
list_companies returns a paginated list of registered companies with fields including name, slug, logo, description, industry, active_jobs_count, and featured flag. Passing a company's encrypted id to get_company_detail adds locations, a full contact block, and an active_jobs array. For a focused jobs view, get_company_jobs returns only the active listings for a given company alongside a company_name and total count.
Reference Lookups
Three reference endpoints return the values needed to build valid filter parameters. list_categories returns encrypted id and name for each job category — these id values feed directly into search_jobs as category_id. list_locations returns numeric id, state_code, state_name, and state_capital for Ethiopian regions, mapping to the state_id filter. list_industries returns industry objects grouped by parent sector, each with an encrypted id, name, and a nested parent object with a title — useful when filtering or displaying company industry context.
ID Format Notes
Most entity IDs in this API are encrypted strings, not plain integers. state_id is the exception — it uses the numeric id from list_locations. When chaining endpoints, pull category_id, level_id, type_id, and company_id values from prior responses rather than constructing them manually.
The EthioJobs API is a managed, monitored endpoint for ethiojobs.net — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ethiojobs.net 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 ethiojobs.net 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 active Ethiopian job listings by region using the
state_idfilter fromlist_locations - Build a job alert system that tracks new postings by
category_idand monitorsdate_publishedanddate_expiryfields - Display company profiles with active job counts using
list_companiesandget_company_detail - Implement a 'similar jobs' recommendation widget using
get_similar_jobson any job detail page - Populate career-level and employment-type filter dropdowns using IDs surfaced in
get_job_detailresponse fields - Map Ethiopian job market activity by sector using
list_industriesparent/child groupings alongside company data - Monitor featured job listings separately from organic listings using the
featuredfilter insearch_jobs
| 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 EthioJobs have an official developer API?+
What does `get_job_detail` return beyond what `search_jobs` provides?+
search_jobs returns a summary including title, type, date_published, date_expiry, state, and catalogs. get_job_detail adds requirement, how_to_apply, type_name, catalog_names, and a full company block — fields not included in the search result objects.Can I filter job searches by industry?+
search_jobs supports filters for category_id, level_id, type_id, state_id, and featured, but there is no industry_id filter parameter. Industry data is available through list_industries and appears on company profiles via get_company_detail. You can fork this API on Parse and revise it to add an industry-based search filter if the underlying data supports it.Does the API expose salary or compensation data for job listings?+
search_jobs or get_job_detail response shapes. Job objects return title, type, level, description, requirement, and how_to_apply, but no structured compensation field. You can fork this API on Parse and revise it to add a salary field if that data appears on individual job pages.How does pagination work across endpoints that support it?+
search_jobs and list_companies both return a meta object containing current_page, last_page, per_page, and total. Pass the page integer parameter to step through results. get_similar_jobs also returns a meta block with current_page and total. Endpoints like list_categories, list_locations, and list_industries return full datasets without pagination.