Karlancer APIkarlancer.com ↗
Access open freelance projects on Karlancer via API. Filter by keyword, urgency, and category. Returns title, budget, skills, proposal count, and more.
What is the Karlancer API?
The Karlancer API provides access to open freelance project listings on Iran's Karlancer platform through a single search_projects endpoint that returns up to 9 fields per project, including title, description, required skills, budget, proposal count, and urgency status. You can filter results by free-text query, urgency flag, or category ID, and paginate through results 24 projects at a time.
curl -X GET 'https://api.parse.bot/scraper/3e0f728a-277b-48fc-b5a4-6a239da64703/search_projects?query=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 karlancer-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: Karlancer SDK — search Iranian freelance projects."""
from parse_apis.karlancer_com_api import Karlancer, InvalidInput
client = Karlancer()
# Browse recent projects matching a skill keyword, capped at 5 results.
for project in client.projects.search(query="python", limit=5):
print(project.title, "|", project.min_budget, "-", project.max_budget)
# Find urgent projects and drill into the first one.
urgent = client.projects.search(is_urgent=True, limit=1).first()
if urgent is not None:
print(urgent.title, "| proposals:", urgent.proposal_count)
print("skills:", ", ".join(urgent.skills))
print("url:", urgent.url)
# Demonstrate error handling for an invalid input.
try:
client.projects.search(category_id="invalid!!", limit=1).first()
except InvalidInput as e:
print("caught invalid input:", e.message)
print("exercised: projects.search")
Search and list open public projects on Karlancer. Returns paginated results sorted by newest first. Supports text search, urgency filter, and category filter. Each page returns up to 24 projects.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). |
| query | string | Free-text search query to filter projects by relevance (searches title, description, and skills). |
| is_urgent | boolean | When true, returns only projects marked as urgent. |
| category_id | string | Category ID to filter projects by category. |
{
"type": "object",
"fields": {
"total": "total number of matching projects",
"per_page": "number of projects per page (24)",
"projects": "array of project objects with id, title, description, skills, budget, proposal_count, urgency, status, and URL",
"last_page": "last available page number",
"current_page": "current page number"
},
"sample": {
"data": {
"total": 5087,
"per_page": 24,
"projects": [
{
"id": 321117,
"url": "https://www.karlancer.com/project/ربات-نمایش-قیمت-لحظه-ای-ارزها-گیفت-های-m080ro5m384r",
"title": "ربات نمایش قیمت لحظه ای ارزها و گیفت های تلگرام در گروه",
"skills": [
"برنامه نویسی",
"ساخت ربات",
"ساخت ربات تلگرام"
],
"status": "pending",
"country": "کهگیلویه و بویراحمد",
"is_urgent": false,
"max_budget": 900000,
"min_budget": 300000,
"description": "سلام میخوام ربات خدمات مجازی که دارم این قابلیت اضافه بشه که توی گروه ها ادش کنن واسه دیدن لحظه ای قیمت ارزهای دیجیتال و گیفت ها و غیره",
"posted_time": "۸ دقیقه پیش",
"proposal_count": 2,
"job_duration_days": 2
}
],
"last_page": 212,
"current_page": 1
},
"status": "success"
}
}About the Karlancer API
What the API Returns
The search_projects endpoint returns a paginated list of publicly visible freelance projects on Karlancer. Each project object includes id, title, description, skills (an array of required competencies), budget, proposal_count, urgency, status, and a direct url to the project page. The total and last_page fields let you determine how many results exist across all pages.
Filtering and Pagination
Results are sorted newest-first by default. You can narrow them using query (free-text search across title, description, and skills), is_urgent (a boolean that filters to urgent-only projects), or category_id (filters to a specific Karlancer project category). Pagination is controlled by the page parameter, which is 1-indexed, and each page returns at most 24 projects. The response echoes back current_page and per_page alongside the results.
Coverage and Scope
The API covers open, publicly listed projects on Karlancer. Projects are Iranian-market focused, so titles, descriptions, and skill labels may appear in Persian (Farsi). Budget values reflect the currency and formatting used on the platform. The proposal_count field shows how many freelancers have already submitted proposals, which is useful for gauging competition on any given listing.
The Karlancer API is a managed, monitored endpoint for karlancer.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when karlancer.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 karlancer.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 urgent Karlancer projects into a job-alert notification service using the
is_urgentfilter - Build a category-specific project feed by filtering with
category_idand polling for new listings - Track proposal count changes over time on high-value projects to gauge freelancer competition
- Index Karlancer project descriptions and skills to match them against a freelancer's profile
- Compare average budgets across project categories by iterating through category-filtered result sets
- Monitor total open project volume on Karlancer using the
totalfield for market trend analysis
| 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 Karlancer have an official public developer API?+
What does the `search_projects` endpoint return for each project?+
id, title, description, skills, budget, proposal_count, urgency, status, and url. You can also retrieve pagination metadata: total, per_page, current_page, and last_page.Does the API return freelancer profiles or bid details for a project?+
Are there any limitations with Persian-language content in the results?+
title, description, and skills fields frequently contain Persian (Farsi) text in right-to-left script. Free-text query searches are matched against this content, so queries in Persian will generally return more relevant results than Latin-alphabet queries.Can I retrieve a single project by its ID?+
search_projects endpoint only, returning paginated lists. You can fork this API on Parse and revise it to add a single-project detail endpoint that accepts a project id.