Search University Programs
search_coursesFull Description
Search university programs abroad. Required: countryName (1–5 countries), courseTag (discipline — use concrete fields like Computer Science, Mechanical Engineering, MBA, Public Health; avoid vague tags like Masters alone), pageIndex (use 1 unless the user asks for another page), and totalPerPage (how many courses the backend should return per page, default 12). Optional: intake (e.g. SEP_2026), tuitionFeesMax as max tuition in INR: prefer whole rupees (e.g. 4500000 for ₹45 lakhs). Values 1–500 are accepted as lakhs and converted server-side; do not use USD. Optional degreeCode UG|PG. Optional courseDurationMin / courseDurationMax in whole months — translate user phrasing into a band: 'up to N years' → min=9, max=N×12; 'N years' alone → min=max(9, N×12−6), max=N×12; '1-2 year programs' or 'X-Y years' → min=X×12, max=Y×12. sortBy defaults to OPTIMISED_SORT ('Best' — relevance + ranking); switch to RANKING for top / best-ranked university intent, or TUITION_FEE_INR with sortOrder=ASC for cheapest-first. limit caps how many cards are returned to ChatGPT/the widget after local filters (not sent to the course API). Returned cards include tuitionFee as overall fee in ₹ lakhs (from tuitionFeeOverallInr) when present, optional tuitionFeeUSD when the API supplies it, intakePeriods[], scholarshipAvailable, logoUrl, and program links.
Parameters (4 required, 9 optional)
countryNamearrayOne or more destination countries to search in, such as ["UK"] or ["Canada", "Ireland"].
courseTagstringProgram subject or discipline (field of study). Use concrete names the catalog understands, e.g. "Computer Science", "Data Science", "Mechanical Engineering", "MBA", "Public Health", "Psychology". Avoid vague phrases like "Masters" alone — pair level with subject or use degreeCode plus a specific discipline.
pageIndexnumberRequired. Pagination index sent to the course API (1 = first page). The model should pass 1 unless the user explicitly asks for another page.
totalPerPagenumberRequired. Page size sent to the course search API — how many raw programs to fetch per request (default 12, max 20). This is not the same as limit.
courseDurationMaxintegerUpper bound of program length in **whole months**. Translation: 'up to N years' / 'maximum N years' → **N×12** (e.g. **24** for 'up to 2 years'). 'N years' alone (single-year mention) → **N×12** (e.g. **12** for '1 year', **24** for '2 years'). Explicit ranges 'X-Y years' → **Y×12** (e.g. **24** for '1-2 year', **36** for '2-3 year'). 'fast-track' / 'accelerated' / 'X-month' → match the user's stated upper bound (e.g. **12** for '9-month or 1 year accelerated'). For 'minimum N years' / 'at least N years' / 'short programs' with no upper bound → omit (only set min). Omit when the user does not state any upper limit.
courseDurationMinintegerLower bound of program length in **whole months**. **Default 12** — universities rarely run masters/UG programs shorter than 1 year and most users don't want diplomas / foundations / HNC. Translation table: • No duration mentioned → **12** (default) • 'up to N years' / 'maximum N years' / 'within N years' (N ≥ 2) → **12** • '1 year' / '1-year programs' (user explicitly asked for ~1 year) → **9** (allows accelerated 9-month variants) • 'N years' alone (N ≥ 2, e.g. '2-year programs') → max(12, N×12 − 6) so **18** for 2 years, **30** for 3 years (~6 month tolerance below) • '1-2 year programs' / 'X-Y years' (X ≥ 1) → X×12, so **12** for 1-2 year, **24** for 2-3 year • 'fast-track' / 'accelerated' / 'X-month' (X < 12) → set min to X (e.g. **6** for '6-month diploma', **9** for '9-month accelerated', **3** for 'short certificate') • 'short programs' / 'diploma' / 'certificate' (no specific length) → **6** Only drop below 12 when the user is **explicitly** signalling a sub-1-year program. Otherwise keep the default.
12degreeCodestringDegree level to search for: UG or PG.
UGPGintakearraySpecific intake periods, format MMM_YYYY (uppercase 3-letter month + 4-digit year, e.g. SEP_2026, JAN_2027). **Today is 2026-10-05** — use this date to resolve relative phrasing like "next intake", "soonest", "earliest", "in 6 months", "this year" into specific MMM_YYYY tokens (e.g. if today is mid-April, "next intake" typically means SEP-OCT of the current year for masters programs). When user names a season, expand it to all the months that season covers — universities differ on exact start months, so passing the full set widens recall: • Fall / Autumn → [AUG_<year>, SEP_<year>, OCT_<year>] • Winter → [JAN_<year>, FEB_<year>] • Spring → [JAN_<year>, FEB_<year>, MAR_<year>] (US convention; some UK schools also use APR) • Summer → [MAY_<year>, JUN_<year>, JUL_<year>] When user names a specific month (e.g. 'September 2026'), use just that one entry [SEP_2026]. Multiple seasons / months can be combined in one array. **Omit this field entirely** when the user doesn't mention any timing — results will then span all intakes.
limitnumberMax programs in this tool result and widget after filters (default 6, max 8). Not sent to the course API — use totalPerPage for how many raw rows to fetch per request.
6sortBystringSort strategy. **Default OPTIMISED_SORT** (= 'Best' — algorithmic relevance score + country ranking). Set **RANKING** when the user asks for top / best-ranked / highest-ranked universities (lower rank number = better). Set **TUITION_FEE_INR** when the user asks for cheapest / most affordable programs (pair with sortOrder=ASC) or most expensive (DESC). When unsure, leave as OPTIMISED_SORT.
OPTIMISED_SORTRANKINGTUITION_FEE_INROPTIMISED_SORTsortOrderstringSort direction. ASC for OPTIMISED_SORT and RANKING (best first). For TUITION_FEE_INR: ASC = cheapest first, DESC = most expensive first.
ASCDESCASCtuitionFeesMaxintegerOptional **maximum** tuition budget. Use for caps like 'under 30 lakhs', 'maximum ₹25 lakhs', 'cheaper than 50 lakhs' (set 30 / 25 / 50 here). For ranges like 'between 15 and 20 lakhs' set this to the high end (20) and tuitionFeesMin to the low end (15). Integers **1–500** are interpreted as **lakhs** (45 → 45,00,000), >500 as full INR. Prefer lakhs unless the user gives an exact rupee figure. Do not use USD.
tuitionFeesMinintegerOptional **minimum** tuition budget. Use for ranges like 'between 15 and 20 lakhs' (set 15 here, 20 in tuitionFeesMax) or 'at least 10 lakhs' (set 10 here, set tuitionFeesMax to 500 — i.e. ~₹5 crore — to act as an effective ceiling). Same unit rules as tuitionFeesMax: integers 1–500 are interpreted as **lakhs** (15 → 15,00,000), >500 as full INR. Do not use USD. Server-side budget filter only fires when tuitionFeesMax is set, so always pair with a Max.