Coursera API: Get course details
Looks up a Coursera course, specialization or professional certificate by name or link and returns its providers, instructors, rating, enrollment, modules, skills, languages and publicly shown price.
Unofficial. Not affiliated with or endorsed by Coursera.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Course, required
course Course, specialization, or certificate name or Coursera link, for example Google Data Analytics.
Google Data Analytics
- Provider optional
provider Optional university or company to distinguish similarly named courses, for example Google.
Google
Default
.
Input as JSON
{ "course": "Google Data Analytics", "provider": "Google"}Output
{ "cost": "$49/month after 7-day free trial" , "link": "https://www.coursera.org/professional-certificates/google-data-analytics" , "type": "Professional Certificate", "level": "Beginner", "price": 49, "title": "Google Data Analytics", "rating": 4.76, "skills": [ "Data Visualization", "File Management", "R (Software)" ], "currency": "USD", "duration": "6 months at 10 hours a week", "languages": [ "English", "Arabic", "French" ], "providers": [ "Google" ], "instructors": [ "Google Career Certificates" ], "number_enrolled": 3890461, "number_of_reviews": 182726, "modules_or_courses": [ { "title": "Foundations: Data, Data, Everywhere", "short_description": "This is the first course in the Google Data Analytics Certificate. Organizations of all kinds need data analysts to help them improve their processes, identify opportunities and trends, launch new products, and make thoughtful decisions. In this course, you’ll be introduced to the world of data…" }, { "title": "Ask Questions to Make Data-Driven Decisions", "short_description": "This is the second course in the Google Data Analytics Certificate. You’ll build on your understanding of the topics that were introduced in the first course of this certificate program. The material will help you learn how to ask effective questions, make data-driven decisions, and meet…" }, { "title": "Prepare Data for Exploration", "short_description": "This is the third course in the Google Data Analytics Certificate. As you continue to build on your understanding of the topics from the first two courses, you’ll be introduced to new topics that will help you gain practical data analytics skills. You’ll learn how to use tools like spreadsheets…" } ], "certificate_offered": true}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"coursera.org/get_course","input":{"course":"Google Data Analytics","provider":"Google"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "coursera.org/get_course" , "input": { "course": "Google Data Analytics", "provider": "Google" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "coursera.org/get_course" , "input": { "course": "Google Data Analytics", "provider": "Google" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run coursera.org/get_course# with {"course":"Google Data Analytics","provider":"Google"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "course" ], "properties": { "course": { "type": "string", "description": "Course, specialization, or certificate name or Coursera link, for example Google Data Analytics." }, "provider": { "type": "string", "default": "", "description": "Optional university or company to distinguish similarly named courses, for example Google." } }}Output schema
{ "type": "object", "required": [ "title", "type", "providers", "instructors", "rating", "number_of_reviews", "number_enrolled", "level", "duration", "modules_or_courses", "skills", "languages", "certificate_offered", "cost", "price", "currency", "link" ], "properties": { "cost": { "type": [ "string", "null" ] }, "link": { "type": "string" }, "type": { "type": "string" }, "level": { "type": [ "string", "null" ] }, "price": { "type": [ "number", "null" ] }, "title": { "type": "string" }, "rating": { "type": [ "number", "null" ], "description": "Rating out of 5." }, "skills": { "type": "array", "items": { "type": "string" } }, "currency": { "type": [ "string", "null" ] }, "duration": { "type": [ "string", "null" ] }, "languages": { "type": "array", "items": { "type": "string" } }, "providers": { "type": "array", "items": { "type": "string" } }, "instructors": { "type": "array", "items": { "type": "string" } }, "number_enrolled": { "type": [ "integer", "null" ] }, "number_of_reviews": { "type": [ "integer", "null" ] }, "modules_or_courses": { "type": "array", "items": { "type": "object", "required": [ "title", "short_description" ], "properties": { "title": { "type": "string" }, "short_description": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "certificate_offered": { "type": "boolean" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
coursera.org/get_course- Returns
- title, type, providers, instructors, rating, enrollment, level, duration, modules, skills, languages, cost
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method coursera.org/get_course with the inputs above.
Ask your agent
- What are the modules, instructors, and price of the Google Data Analytics professional certificate?
- Can you pull up the rating, enrollment count, and skills covered by the Machine Learning course from Stanford?
- I'm looking at the Python for Everybody specialization on Coursera, what level is it and how long does it take to finish?
- Show me which languages the Deep Learning Specialization from DeepLearning.AI is offered in and what it costs.
- Find the providers and instructors behind the IBM Data Science professional certificate, plus its overall rating.
See more
All Coursera methodsFinds Coursera courses, specializations, professional certificates, degrees and guided projects on a topic, in Coursera's search order.
coursera.org/search_coursesSearches Udemy courses on a topic and returns US visitor prices in USD, ratings, lecture counts and course details.
udemy.com/search_coursesFinds free MIT OpenCourseWare courses matching a topic, in relevance order, optionally limited to a course level or courses with lecture videos.
ocw.mit.edu/search_coursesFinds a university's QS profile by name and returns its latest QS World University Ranking and overall score, location, student figures, faculty ratio, public tuition ranges and up to five listed subject ranks.
topuniversities.com/get_universityLooks up a university on Times Higher Education and returns its latest displayed world ranking, overall and pillar scores, student statistics and subject rankings.
timeshighereducation.com/get_universityLooks up a PlayStation Store game by name or product link in a country. Prefers the standard full game; prices and offers vary by country. Game trials are not counted as PlayStation Plus inclusion.
store.playstation.com/get_gameGets public details for one Airbnb listing from its link. When dates are given, it also returns dated prices and cancellation terms if Airbnb offers a quote.
airbnb.com/get_listingCompares 2 to 5 US colleges from College Scorecard by enrollment, admissions, cost after aid, graduation, 10-year earnings and graduation debt. Missing figures are null; names not found are listed separately.
collegescorecard.ed.gov/compare_colleges