Faradars APIfaradars.org ↗
Access Faradars course catalog via API. Search thousands of Persian video courses, retrieve full metadata, pricing, ratings, and category trees.
What is the Faradars API?
The Faradars API exposes 3 endpoints covering Faradars.org, Iran's Persian-language online education platform hosting thousands of video courses. Use search_courses to query the full catalog by keyword, category, or sort order, and get_course_details to retrieve per-course metadata including title, price in Tomans, instructor list, duration breakdown, learning objectives, and rating data. list_categories returns the complete category hierarchy for structured browsing.
curl -X GET 'https://api.parse.bot/scraper/ffef4af3-6506-4b45-8cf9-d9a1bfed5e01/search_courses?sort=relevance&term=python&category_id=7609' \ -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 faradars-org-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: Faradars SDK — browse categories, search courses, drill into details."""
from parse_apis.faradars_org_api import Faradars, Sort, CourseNotFound
client = Faradars()
# List top-level categories to discover a category_id for filtering.
for cat in client.categories.list(limit=5):
print(cat.id, cat.name, cat.slug)
# Search courses in the first category, sorted by popularity.
cat = client.categories.list(limit=1).first()
if cat is not None:
for course in client.course_summaries.search(
category_id=str(cat.id), sort=Sort.POPULAR, limit=3
):
print(course.title, course.price, course.total_student)
# Drill down from a search hit to full course details via typed navigation.
hit = client.course_summaries.search(term="python", limit=1).first()
if hit is not None:
detail = hit.details()
print(detail.title_en, detail.rating.rate, detail.rating.total)
print("Duration:", detail.duration.hours, "h", detail.duration.minutes, "m")
for obj in detail.klo[:3]:
print(" -", obj.objective)
# Direct point-lookup when the slug is already known.
try:
course = client.courses.get(slug="install-python-fvpy326")
print(course.title, course.is_free, course.sold_count)
except CourseNotFound:
print("Course not found")
print("exercised: categories.list / course_summaries.search / details / courses.get")
Search courses by keyword with optional category filtering and sorting. Returns paginated results with course summaries including title, price, duration, instructor, and popularity metrics. One upstream round-trip per call.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based). |
| sort | string | Sort order for results. |
| term | string | Search keyword (e.g. 'python', 'excel'). Omitting returns all courses. |
| count | integer | Number of results per page (max 100). |
| category_id | string | Category ID to filter results. IDs are available from the list_categories endpoint (e.g. '1049' for programming). |
{
"type": "object",
"fields": {
"items": "array of course summaries with id, title, slug, price, duration, instructors, etc.",
"pagination": "object with page, items_per_page, total_pages, total_items"
},
"sample": {
"data": {
"items": [
{
"id": 9233593,
"sku": "fvpy326",
"url": "https://faradars.org/courses/install-python-fvpy326",
"slug": "install-python-fvpy326",
"type": "course",
"price": 0,
"score": 168.56,
"title": "آموزش رایگان نصب پایتون Python در ویندوز",
"status": "published",
"duration": {
"hours": 0,
"minutes": 37,
"in_minutes": 37,
"rounded_in_hour": 1
},
"png_image": "https://faradars.org/wp-content/uploads/2024/04/17/fvpy326.png",
"svg_image": "https://faradars.org/wp-content/uploads/2024/04/17/fvpy326.svg",
"total_sale": 9,
"total_view": 300257,
"instructors": [
{
"last_name": "محمدی",
"first_name": "عباس"
}
],
"title_short": "آموزش نصب پایتون در ویندوز",
"total_student": 15683,
"has_certificate": false
}
],
"pagination": {
"page": 1,
"total_items": 411,
"total_pages": 137,
"items_per_page": 3
}
},
"status": "success"
}
}About the Faradars API
Endpoints Overview
The API covers three main operations. search_courses accepts a term parameter for keyword queries (e.g. 'python', 'excel') alongside optional category_id, sort, count (up to 100 per page), and page for pagination. It returns an items array of course summaries—each with id, title, slug, price, duration, and instructor data—plus a pagination object containing total_items, total_pages, page, and items_per_page.
Course Details
get_course_details takes a slug (e.g. 'install-python-fvpy326', obtained from search results) and returns the full course record. Fields include title and title_en for Persian and English names, price as an integer in Tomans (0 for free courses), is_free boolean, a duration object with hours, minutes, and in_minutes, a rating object with rate and total review count, a klo array of key learning objectives, and a categories array. This is the primary endpoint for building course detail pages or enrichment pipelines.
Category Hierarchy
list_categories requires no parameters and returns the full category tree as a nested array. Each node carries an id, name, slug, and optional childs array for subcategories. Category IDs from this endpoint feed directly into the category_id filter on search_courses, enabling structured browsing by subject area (e.g. programming, design, business).
Coverage and Language
Faradars focuses on Persian-language content for Iranian learners. Course titles are primarily in Persian, though title_en provides an English equivalent where available. All pricing is expressed in Tomans. The platform covers a wide range of technical and vocational subjects; category depth and course count vary by subject area.
The Faradars API is a managed, monitored endpoint for faradars.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when faradars.org 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 faradars.org 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?+
- Build a Persian e-learning aggregator that indexes course titles, prices, and instructors from Faradars alongside other platforms.
- Track price changes on specific courses using repeated calls to get_course_details and comparing the price field over time.
- Filter programming courses by category_id from list_categories and rank them by rating to surface top-rated technical content.
- Generate a structured course catalog for a Persian-language educational directory using search_courses pagination across all categories.
- Enrich an internal LMS by pulling learning objectives from the klo array and course duration from the duration object.
- Identify free courses on the platform by filtering search results where is_free is true and price equals 0.
- Map the full subject taxonomy for Faradars by traversing the nested childs arrays returned by list_categories.
| 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.