IranTalent APIirantalent.com ↗
Access paginated job postings from IranTalent.com. Filter by keyword and province, retrieve titles, employer info, salary, location, and more via one endpoint.
What is the IranTalent API?
The IranTalent API exposes job postings from Iran's leading job board through a single list_jobs endpoint that returns up to 30 results per page across fields including job title, employer details, location, category, salary range, and employment type. Responses include pagination metadata — total count, current page, and last page — so you can systematically walk the full dataset or narrow results by keyword and province.
curl -X GET 'https://api.parse.bot/scraper/b39c33cc-6a78-4c81-9c63-a3b23fa7336d/list_jobs?keyword=python' \ -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 irantalent-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: IranTalent Jobs SDK — search and browse Iranian job postings."""
from parse_apis.irantalent_com_api import IranTalent, InputFormatInvalid
client = IranTalent()
# Search for Python-related jobs, capped at 5 results total.
for job in client.jobs.search(keyword="python", limit=5):
print(job.title, "|", job.employer_name, "|", job.location or job.location_farsi)
# Drill into the first result's categories.
job = client.jobs.search(keyword="مدیر", limit=1).first()
if job is not None:
print(job.title_farsi, "—", job.seniority)
for cat in job.categories:
print(" ", cat.title, "/", cat.title_farsi)
# Browse all jobs in Tehran province (province_id='216'), limited to 3.
try:
for job in client.jobs.search(province_id="216", limit=3):
salary = f"{job.salary_from}-{job.salary_to}" if job.salary_from else "not listed"
print(job.title, "|", salary)
except InputFormatInvalid as e:
print("Invalid filter input:", e.message)
print("exercised: jobs.search (keyword, province_id, limit, .first(), categories)")
List job postings from IranTalent. Returns paginated results sorted by relevance. Supports keyword search and province filtering. Each page returns up to 30 jobs. When no keyword is provided, returns all available jobs.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. Each page contains up to 30 results. |
| keyword | string | Search keyword to filter jobs by title or description (e.g. 'python', 'مدیر'). Omitting returns all jobs. |
| province_id | string | Province location ID to filter jobs by region (e.g. '216' for Tehran, '229' for Isfahan, '1' for Outside of Iran). Omitting returns jobs from all provinces. |
{
"type": "object",
"fields": {
"jobs": "array of job objects with id, titles, employer info, location, category, salary, and employment details",
"total": "total number of matching jobs",
"per_page": "number of results per page",
"last_page": "last available page number",
"current_page": "current page number"
},
"sample": {
"data": {
"jobs": [
{
"id": 180005,
"slug": "web-designer-robotic-teacher",
"title": "Web Designer & robotic teacher",
"location": null,
"is_remote": false,
"salary_to": 200000000,
"seniority": "Junior Professional",
"work_type": "on_site",
"categories": [
{
"id": 234,
"title": "IT - Network Administration",
"title_farsi": "فناوری اطلاعات - مدیریت شبکه/ادمین شبکه"
}
],
"created_at": "2026-07-08",
"salary_from": 150000000,
"title_farsi": "مربی رباتیک و طراحی سایت",
"employer_name": "Raymand Robot",
"employer_slug": "raymand-robot",
"location_farsi": "کرج",
"reference_code": "P0180-005",
"employment_type": "Full Time",
"seniority_farsi": "کارمند / کارشناس",
"employer_name_farsi": "رایمند ربات",
"is_premium_employer": true,
"employment_type_farsi": "تمام وقت"
}
],
"total": 19,
"per_page": "30",
"last_page": 1,
"current_page": 1
},
"status": "success"
}
}About the IranTalent API
What the API Returns
The list_jobs endpoint returns an array of job objects alongside four pagination fields: total (matching job count), per_page (always 30), current_page, and last_page. Each job object carries an id, title information, employer details, geographic location, job category, salary data, and employment-type flags. This makes the endpoint suitable for building job aggregators, labor-market analysis tools, or recruitment dashboards focused on the Iranian job market.
Filtering and Pagination
The endpoint accepts three optional inputs. keyword filters jobs by title or description and accepts both Latin characters (e.g. python) and Persian text (e.g. مدیر). province_id scopes results to a specific Iranian province — for example, 216 for Tehran or 229 for Isfahan. page lets you step through results; because each page holds up to 30 jobs, you can compute the total pages needed from the last_page field in any response. Omitting keyword returns the full job feed without text filtering.
Coverage Scope
All data reflects postings listed on IranTalent.com, which focuses on professional and technical roles in Iran. The API currently covers the list_jobs surface: search, province filtering, and paginated browsing. Individual job detail pages, company profiles, and candidate-facing features are not part of the current endpoint set.
The IranTalent API is a managed, monitored endpoint for irantalent.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when irantalent.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 irantalent.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 Iranian tech job postings filtered by province_id for a regional job board
- Track salary trends across job categories on the Iranian labor market using the salary field
- Build a Persian-language job alert service using keyword and province_id filters
- Analyze employer hiring frequency by aggregating employer info fields over time
- Populate a recruitment CRM with structured job data including employment type and location
- Monitor new postings in a specific sector by paginating through the full feed with list_jobs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does IranTalent have an official developer API?+
How do I retrieve jobs for a specific city or region?+
province_id value to the list_jobs endpoint. For example, use 216 for Tehran or 229 for Isfahan. You can combine province_id with a keyword to narrow results by both location and job type simultaneously. The response will include total so you know how many matching postings exist in that province.Does the API return individual job detail pages with full descriptions?+
list_jobs endpoint returns summary-level fields per job: id, titles, employer info, location, category, salary, and employment details. Full job description text from individual posting pages is not included in the response. You can fork this API on Parse and revise it to add an endpoint that fetches the complete job detail for a given job id.Are company profile pages or employer listings accessible through this API?+
list_jobs, which includes employer name and basic info embedded in each job object. Dedicated company profile data — such as company size, founding year, or full employer description — is not exposed as a separate endpoint. You can fork it on Parse and revise to add the missing endpoint.What is the maximum number of results per page and how does pagination work?+
list_jobs returns up to 30 jobs. The response includes last_page which tells you the total number of available pages for your query. Increment the page parameter from 1 to last_page to retrieve the full result set for any given keyword or province filter.