Ponisha APIponisha.ir ↗
Search and retrieve open freelance projects from Ponisha.ir. Get titles, descriptions, skills, budget ranges, proposal counts, and urgency status via one endpoint.
What is the Ponisha API?
The Ponisha.ir API provides access to open freelance project listings on Iran's Ponisha platform through a single search_projects endpoint that returns up to 10 fields per project, including title, description, required skills, budget range, proposal count, and urgency status. Query by keyword, paginate results, and sort listings to monitor the Iranian freelance market programmatically.
curl -X GET 'https://api.parse.bot/scraper/aeaf2ca3-2195-42f7-aa54-63ac0593c703/search_projects?page=1&sort=default&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 ponisha-ir-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: Ponisha freelance project search — bounded, re-runnable."""
from parse_apis.ponisha_ir_api import Ponisha, Sort, InvalidInput
client = Ponisha()
# Browse newest open projects, capped at 5 total items.
for project in client.projects.search(sort=Sort.NEWEST, limit=5):
print(project.title, f"({project.proposal_count} proposals)")
# Search for Python projects and drill into the first result.
try:
hit = client.projects.search(query="python", sort=Sort.MOST_PROPOSALS, limit=1).first()
except InvalidInput as e:
print(f"Invalid search input: {e.message}")
hit = None
if hit is not None:
print(f"Top result: {hit.title}")
print(f" Budget: {hit.budget_min} – {hit.budget_max}")
print(f" Skills: {', '.join(hit.skills)}")
print(f" URL: {hit.project_url}")
print("exercised: projects.search (browse + keyword filter)")
Search open public projects on Ponisha. Returns paginated results with project details including title, description, skills, budget range, proposal count, urgency/promotion status, and direct project URL. When query is omitted, returns all open projects. Pagination is controlled by page and per_page parameters; the response includes total_items and total_pages from the upstream source.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-indexed). |
| sort | string | Sort order for results. |
| query | string | Free-text search query to filter projects by keyword. Omitting returns all open projects. |
| per_page | integer | Number of results per page (1-50). |
{
"type": "object",
"fields": {
"projects": "array of project objects with id, title, description, skills, budget_min, budget_max, proposal_count, is_urgent, promotions, priority, project_url, slug, bidding_closed_at, approved_at",
"pagination": "object with total_items, total_pages, current_page, per_page"
},
"sample": {
"data": {
"projects": [
{
"id": "754730",
"slug": "طراحی-یک-پلتفرم-آنلاین-در-حوزه-صنعت-ساختمان",
"title": "طراحی یک پلتفرم آنلاین در حوزه صنعت ساختمان",
"skills": [
"برنامه نویسی سی پلاس پلاس (C++)",
"جاوا (Java)",
"جاوا اسکریپت (JavaScript)"
],
"priority": "ترکیبی از قیمت و کیفیت اهمیت دارد.",
"is_urgent": false,
"budget_max": 500000000,
"budget_min": 335000000,
"promotions": [],
"approved_at": 1787750713,
"description": "طراحی پلتفرم آنلاین در حوزه صنعت ساختمان در چند فاز و با هدف برطرف کردن نیاز این صنعت و دیجیتالی کردن ان با ادغام هوش مصنوعی به عنوان دستیار مهندسی",
"project_url": "https://ponisha.ir/project/طراحی-یک-پلتفرم-آنلاین-در-حوزه-صنعت-ساختمان",
"proposal_count": 54,
"bidding_closed_at": 1789046713
}
],
"pagination": {
"per_page": 20,
"total_items": 34,
"total_pages": 2,
"current_page": 1
}
},
"status": "success"
}
}About the Ponisha API
What the API Returns
The search_projects endpoint returns paginated arrays of open public projects posted on Ponisha.ir. Each project object includes id, title, description, skills, budget_min, budget_max, proposal_count, is_urgent, promotions, and prior. The skills field lists the technical or creative competencies the client requires, while budget_min and budget_max define the stated compensation range in Iranian Rial. The is_urgent flag and promotions field indicate whether the project has been marked for expedited delivery or boosted visibility.
Filtering and Pagination
The query parameter accepts a free-text string to filter projects by keyword — omitting it returns all currently open projects. Results are paginated using page (1-indexed) and per_page (1–50 items). The pagination object in every response includes total_items, total_pages, current_page, and per_page, so you can reliably walk through large result sets. A sort parameter controls the ordering of results.
Coverage and Scope
The API covers publicly visible, open projects only. It reflects the state of Ponisha's public project listings and is suited for market research, aggregation dashboards, and skill-demand tracking in the Iranian freelance sector. Only active, open projects appear — closed, draft, or private projects are not included in responses.
The Ponisha API is a managed, monitored endpoint for ponisha.ir — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ponisha.ir 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 ponisha.ir 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?+
- Monitor demand for specific skills on the Iranian freelance market by querying
search_projectswith skill-related keywords - Track budget ranges across project categories to benchmark freelance rates in Iran
- Build a project alert system that surfaces new urgent projects using the
is_urgentfield - Aggregate proposal counts to identify competitive vs. underserved project categories
- Feed a Farsi-language freelance aggregator that combines Ponisha listings with other platforms
- Analyze
promotionsdata to study how clients use paid visibility features on Ponisha - Research skill trends in the Iranian tech sector by extracting
skillsarrays across paginated results
| 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 Ponisha.ir have an official developer API?+
What does `search_projects` return for each project, and how do I narrow results?+
id, title, description, skills, budget_min, budget_max, proposal_count, is_urgent, promotions, and prior. Pass a query string to filter by keyword. Without query, all open projects are returned. Use page and per_page (up to 50) to paginate, and sort to control ordering.Are closed or awarded projects accessible through this API?+
Does the API return freelancer profiles or bid details, not just project listings?+
Is pagination reliable for walking through large result sets?+
pagination object with total_items, total_pages, current_page, and per_page. Use page (1-indexed) and per_page (1–50) together to iterate through all results. Note that the listing can shift between requests as new projects are posted or existing ones close.