ol APIol.om ↗
Access Oman job listings from ol.om (Ashiq Oman) via API. Search postings, browse categories, and fetch full Arabic job post details including title, date, and content.
What is the ol API?
The ol.om API exposes 2 endpoints for accessing job and training postings from Ashiq Oman, one of Oman's Arabic-language job boards. The search_jobs endpoint lets you search or browse paginated listings returning structured objects per post, while get_job_details returns 8 fields of full post content — including title, category, date, tags, plain-text body, and HTML content — for any specific posting by its numeric ID.
curl -X GET 'https://api.parse.bot/scraper/a4dbd03c-189b-4069-a6c4-3e6969fdd215/search_jobs?page=1' \ -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 ol-om-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.ol_om_jobs_api import OlOm, Job, JobSummary
client = OlOm()
# Browse all job postings in the jobs/training category
for job_summary in client.jobsummaries.search():
print(job_summary.title, job_summary.date, job_summary.url)
# Drill into the full details of the first posting
details = job_summary.details()
print(details.title, details.date, details.category, details.featured_image)
break
Search or browse job postings on ol.om. When a query is provided, performs a site-wide keyword search. When no query is provided, browses the jobs/training category. Returns paginated results with up to 20 posts per page. Content is in Arabic.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| query | string | Search keyword to filter job posts. When empty, browses all jobs in the jobs/training category. |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with post_id, title, url, date, category, thumbnail",
"page": "integer - current page number",
"query": "string - the search query used",
"has_next_page": "boolean - whether more results exist"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://ol.om/8208744/",
"date": "11 يونيو، 2026",
"title": "شركة أسواق مسقط للاستثمار تعلن وظيفة شاغرة",
"post_id": "8208744",
"category": "وظائف وتدريب",
"thumbnail": "https://ol.om/wp-content/uploads/2026/06/IMG_2069-350x250.png"
}
],
"page": 1,
"query": "",
"has_next_page": true
},
"status": "success"
}
}About the ol API
Searching and Browsing Job Listings
The search_jobs endpoint returns paginated job and training postings from ol.om. Pass a query string to perform a site-wide keyword search (e.g., 'engineer' or 'marketing'), or omit it to browse the full jobs and training category. Results come back 20 per page, and the has_next_page boolean tells you whether additional pages exist. Each item in the jobs array includes a post_id that you pass directly to the detail endpoint. All text content is in Arabic.
Fetching Full Job Post Details
The get_job_details endpoint accepts a numeric post_id — taken from search_jobs results — and returns the complete posting. Response fields include title, date, category, tags (array), content_text (plain text body), content_html (full HTML rendering), featured_image (URL), and the canonical url. This is where salary details, requirements, and company information appear when the original post includes them — the API surfaces the full post content rather than a truncated preview.
Coverage and Language
ol.om is an Oman-focused platform and content is exclusively in Arabic. The category field identifies whether a post is a job listing or a training opportunity, as the platform covers both. Pagination is numeric via the page parameter on search_jobs, starting from page 1.
The ol API is a managed, monitored endpoint for ol.om — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ol.om 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 ol.om 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 Arabic-language Oman job listings into a bilingual recruitment platform
- Monitor new postings in specific categories by polling
search_jobswith no query and trackinghas_next_page - Extract full job requirements and descriptions via
get_job_detailsto feed an NLP pipeline for skills extraction - Build a job alert system by searching
querykeywords and storingpost_idvalues to detect new results - Collect training opportunity listings from Oman alongside job postings using the browse mode of
search_jobs - Index Oman job market data by category and date using the
categoryanddatefields fromget_job_details
| 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 ol.om have an official developer API?+
What does `search_jobs` return for each listing, and how do I get the full post body?+
search_jobs returns an array of job listing objects with a post_id per item, plus pagination metadata (page, has_next_page, query). The listing objects give you enough to identify and filter posts. To get the full body text, HTML, tags, date, and featured image for a specific post, pass that post_id to get_job_details.Does the API return salary or company name as dedicated structured fields?+
content_text and content_html fields returned by get_job_details. You can fork the API on Parse and revise it to parse and expose those values as dedicated fields if your use case requires them.Can I filter `search_jobs` results by category or date?+
search_jobs endpoint currently accepts only a query keyword and a page number. Category-level filtering and date-range filtering are not available as parameters. You can fork the API on Parse and revise it to add category or date filter parameters.