
Linkedin Learning
io.github.johnisanerd由 GitHub 账号 johnisanerd 发布v1.1.0更新于 Nov 7, 2026
LinkedIn Learning course data: ratings, syllabus, skills. Paid, on Apify's hosted MCP.
概览
一个托管在 Apify 上的 MCP 服务器,让助手搜索公开的 LinkedIn Learning 课程目录,并获取课程详情、评价和教学大纲。
- 可以做什么
- 按关键词或主题搜索公开的 LinkedIn Learning 课程目录,可按难度、时长、软件和内容类型筛选。
- 根据课程、单节课或学习路径链接获取完整课程记录,包括评分、学习人数、讲师、技能和证书信息。
- 读取学员撰写的文字评价,含评价者姓名、职位和主页链接。
- 逐节查看教学大纲,包括每节课的免费试看标记和免费课时数量。
- 将结果行导出为 JSON、CSV 或 Excel,并可定时运行以跟踪新课程或刷新评分。
- 适用场景
- 适合在无需站点授权或登录的情况下做课程目录调研、收集评分与评价文本,或查看大纲和免费试看内容,例如构建课程对比数据集、跟踪某主题的新上线课程。
- 运行要求
- 使用 Apify 托管的远程 MCP 端点,通过 OAuth 登录或使用 Apify API 令牌(以 bearer Authorization 请求头发送)访问。运行费用计入 Apify 账户。README 中的 Python 客户端方式还需要 Python 3.11 或更高版本、uv 以及 APIFY_API_TOKEN。
安装
在 SourceWeft 中
- 打开 控制台中的 Linkedin Learning,将其添加到工作区。
- 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.johnisanerd%2Flinkedin-learning/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。
{
"mcpServers": {
"linkedin-learning": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/linkedin-learning-api"
}
}
}README
🎓 LinkedIn Learning API: Course Data, Reviews and Syllabus from Python and MCP
A Python and MCP quick-start for the LinkedIn Learning API on Apify. Search the public LinkedIn Learning course catalog by keyword, skill level, length or software, then pull the full record for any course: rating and rating count, written learner reviews, the complete syllabus with a description and a free-preview flag on every lesson, instructors with profile links, skills taught and certificate details. None of it needs a login, a cookie or a site license.
- Actor: LinkedIn Learning API on Apify
- Input schema: input parameters
- Get a free API token: apify.com
LinkedIn's own Learning API is available only through its Partner Program or a purchased site license, with OAuth keys an admin has to provision. This Actor reads the pages LinkedIn Learning already publishes to logged-out visitors and returns the same catalog metadata as JSON: course title, link, instructors, duration, viewer count and thumbnail from a search, or the full record with reviews and table of contents from a course URL. It covers the public catalog only. LinkedIn's reporting API, which returns learner activity for a licensed organization, is a different product and nothing here reads it. You pay per row: $0.10 per 1,000 search results and $0.50 per 1,000 full course records. Apify also applies its platform accounting events, $0.00001 per Actor start (one event per GB of run memory, at least one) and $0.00001 per stored dataset row.
Video: Build MCP servers with Apify
Text walkthrough
The LinkedIn Learning API has two modes, set by mode. In search mode you pass queries (up to 25 keywords) or topics, optionally narrowed by sortBy, difficultyLevel, entityType, duration and softwareNames, and each course comes back as a search_result row with title, courseUrl, courseId, entityType, instructors, durationText, viewersText, releaseText and thumbnailUrl. LinkedIn serves at most 50 results per query, so expandWithFilters re-runs the query across LinkedIn's own filter combinations and merges the unique courses when you need a fuller course list. In details mode you pass courseUrls (course, lesson or learning path links, up to 200) and get a course_detail row with ratingValue, ratingCount, enrollmentCount, reviews, tableOfContents with a per-lesson isFree flag, skills, instructors, lessonCount, freeLessonCount, hasCertificate and certificateName. Setting enrichDetails to true on a search opens each found course and returns the full record instead, billed once at the full-record rate. The published task Extract LinkedIn Learning Course Reviews and Ratings runs details mode on three course URLs and returns the written review text with each reviewer's name, job title and profile link; run_course_reviews() in the example file makes the same details-mode call from Python, trimmed to the first of those three URLs so the first run costs about $0.0005.
Quick Start
Prerequisites: Python 3.11 or newer, uv, and a free Apify API token from apify.com.
Each example is a separate flag:
Every example asks for a small number of rows on purpose. You pay per row delivered, so confirm the shape of the data first, then raise maxItems.
If you do not want a .env file, export the token instead:
Why use this LinkedIn Learning API
A short list of what the Actor returns and what it costs, before the field-level detail in Features and Output Format.
No login and no site license
The Actor reads only what LinkedIn Learning shows a logged-out visitor. There is no field for a session cookie and no OAuth step. Anyone with a free Apify token can run it.
The full syllabus, lesson by lesson
tableOfContents lists every section and lesson with its own title, description, durationSeconds, url and an isFree flag, with freeLessonCount totalled on the course. That is how you find the free preview lessons without opening each page.
Pay for the rows you receive
Search results are billed on the course-found event at $0.10 per 1,000; full records on course-detail at $0.50 per 1,000. Duplicates, error rows and the popular-courses page LinkedIn substitutes when a query matches nothing are never charged at the course-found or course-detail rate.
LinkedIn Learning reviews with the reviewer's identity
A full course record carries reviews whenever the course page publishes written reviews: the review text, its star rating, and the reviewer's authorName, authorJobTitle and authorProfileUrl, plus datePublished. Other course data tools stop at the star average and rating count; the written text and who wrote it are only on the course page.
LinkedIn Learning course catalog and course list past the 50-result cap
LinkedIn shows at most 50 results for any one search. Run search mode across a set of keywords or topic pages, turn on expandWithFilters to get past that ceiling, and export the dataset as JSON, CSV or Excel. expandWithFilters repeats each query across LinkedIn's own filter combinations and merges the unique courses; within each query rows deduplicate on courseId, lessons on their own URL, so a course reached through two slugs is returned once; a course that matches two different queries appears once under each searchQuery. It is the closest thing to a LinkedIn Learning course catalog download that needs no account.
LinkedIn Learning learning paths, lessons and courses, told apart
entityType separates COURSE, VIDEO and LEARNING PATH in search results. A learning path URL in details mode returns pathUrl, courseCount and the ordered courses inside it; a lesson URL returns that lesson joined to its parent courseId.
Features
Core Capabilities
- Search by
queriesortopics, narrowed withsortBy,difficultyLevel,entityType,durationandsoftwareNames. - LinkedIn Learning course catalog download:
expandWithFiltersre-runs a query across LinkedIn's own filter combinations, the only route past the 50-results-per-query cap, so a course list longer than 50 rows comes from one run. - LinkedIn Learning learning paths: details mode takes course, lesson and learning path URLs, up to 200 per run, and returns a
course_detail,lessonorlearning_pathrow for each. enrichDetailsturns a search into full course records in one run, billed once per row at the full-record rate.- LinkedIn Learning free courses:
freeLessonCountand the per-lessonisFreeflag intableOfContentsshow how much of each course is watchable without a subscription. - Online courses dataset: run many
queriesortopicsin one search and export the rows from every query, each labelled with itssearchQuery, as JSON, CSV or Excel.
Data Quality
- Each review carries
body,rating,authorName,authorJobTitle,authorProfileUrlanddatePublished. - Every lesson in
tableOfContentshas its owndescription,durationSeconds,urlandisFreeflag. courseUrlis the canonical link with tracking parameters stripped; within each query (and within a details run) rows deduplicate oncourseId, lessons on their own URL, so a course reached through two slugs is returned once; a course that matches two differentqueriesappears once under eachsearchQuery.no_resultsanderrorrows are pushed so you can see what failed, and are never billed at the course-found or course-detail rate.
Recipes
Ready-made configurations with their own Store landing pages:
- LinkedIn Learning Course Data as JSON, No Login: search mode on
"project management"withmaxItems25; each row has title, link, instructors, duration, viewer count and thumbnail. Local:uv run python linkedin-learning-api-example.py --example catalog - LinkedIn Learning Course Data Without a Login: the same search shape on
"cybersecurity", proving the catalog reads with no account and no session cookie. - Extract LinkedIn Learning Course Reviews and Ratings: details mode on three course URLs; each row carries
ratingValue,ratingCountand the writtenreviews. Local:uv run python linkedin-learning-api-example.py --example reviews - Build a LinkedIn Learning Course Ratings Dataset: search
"python"withenrichDetailstrue andmaxItems5, so each course row is a full record with rating, rating count, learner numbers, level and duration (learning path hits stay as search rows). - Track New LinkedIn Learning Course Releases: search
"artificial intelligence"withsortByRECENCY, newest first. Local:uv run python linkedin-learning-api-example.py --example new-courses
Schedule tip. Save any of these inputs as a Task on the Actor page and schedule it to run weekly. With sortBy set to RECENCY the dataset lists the newest courses on a topic every week, and with enrichDetails on it refreshes ratingValue, ratingCount and the written reviews for every course, without anyone touching it.
Usage Examples
Basic, matching the default run:
Advanced, a filtered search enriched to full records:
Details mode, full records for URLs you already have:
Input Parameters
Only mode is required. Search settings apply when mode is search; courseUrls applies when mode is details. In search mode at least one of queries or topics must be non-empty.
Output Format
A search_result row:
A course_detail row, trimmed to one syllabus section and one review:
Fields you will use most:
no_results rows carry resultType, searchQuery, message and fetchedAt; error rows carry resultType, errorType, errorMessage, fetchedAt, plus sourceUrl and httpStatus when the failure concerns one URL. An invalid-input error carries no URL or query at all. Learning path rows use pathUrl in place of courseUrl.
🤖 Ask an AI assistant about this Actor
Open a ready-to-send prompt about the LinkedIn Learning API in the AI of your choice:
- 💬 ChatGPT
- 🧠 Claude
- 🔍 Perplexity
- 🅒 Copilot
People also search for
Will this put my LinkedIn or LinkedIn Recruiter account at risk?
No. It reads public LinkedIn pages only, the ones anyone can open while signed out. It never logs in and never asks for your cookies: there is no input for an account, a password or an li_at session cookie. Nothing it does is tied to your LinkedIn account, your LinkedIn Learning license, your LinkedIn Recruiter seat or your Sales Navigator license. The requests run on Apify's servers, not in your browser, so nothing connects them to you, and you can keep working in Recruiter while a run is going.
Does LinkedIn Learning give certificates?
Yes, a certificate of completion, and every full course record reports it in hasCertificate and certificateName (for example LinkedIn Learning Certificate of Completion). It is a certificate of completion rather than an accredited qualification.
Are LinkedIn Learning courses free?
Most courses need a subscription (accessModel reads Subscription wherever the course page publishes an offer, and is left out of the row otherwise), but courses expose individual lessons as free previews. The API flags each one with isFree inside tableOfContents and totals them in freeLessonCount, so you can sort a set of courses by how much is watchable for free.
How do you get a list of LinkedIn Learning courses?
Run the Actor in search mode with one or more queries, or point it at topics. Each row is one course with its title, link, instructors, duration and viewer count. LinkedIn caps any single query at 50 results, so a longer LinkedIn Learning course list comes from more queries or from expandWithFilters, which re-runs a query across LinkedIn's own filter combinations and merges the unique courses. The official course list download and the official API both need a site license or Partner Program access, provisioned by an admin. The task LinkedIn Learning Course Data Without a Login is that search with no account and no session cookie.
Do all LinkedIn Learning courses have certificates?
Most do, but check rather than assume: run a search with enrichDetails set to true and filter the dataset on hasCertificate. Learning path and single-lesson rows carry no hasCertificate field at all, so filter on resultType equal to course_detail before reading it.
What is a learning path in LinkedIn Learning?
A learning path is a curated sequence of several courses on one topic. In search results it appears with entityType LEARNING PATH, and you can restrict a search to paths with entityType: "LEARNING_PATH". Pass a /learning/paths/... URL in details mode and you get a learning_path row with pathUrl, courseCount and the ordered courses inside it.
What is the difference between a LinkedIn Learning path and a course?
A course is one multi-lesson unit with its own syllabus, rating and certificate. A path is a container that orders several courses. The entityType field tells them apart in search results (COURSE against LEARNING PATH), and in details mode a course URL returns a course_detail row while a path URL returns a learning_path row listing its member courses.
How do you find the free courses on LinkedIn Learning?
Pull full records with details mode or enrichDetails, then read isFree on every lesson in tableOfContents and freeLessonCount on the course. The published task Find Free Preview Lessons in LinkedIn Learning Courses does this for three courses.
Can you download the LinkedIn Learning course catalogue?
LinkedIn's own course list download is an admin feature of a purchased site license. Without one, run this Actor in search mode across the keywords or topic pages you care about, turn on expandWithFilters, and export the dataset as JSON, CSV or Excel from the run's Output tab or through the dataset endpoint. A broad catalog is assembled from many queries because LinkedIn caps each one at 50 results.
Is this the official LinkedIn Learning API or the reporting API?
Neither. The official LinkedIn Learning API and the LinkedIn Learning reporting API are LinkedIn products for organizations with a Partner Program agreement or a site license, provisioned by an admin with OAuth keys, and the reporting API returns learner activity such as who completed what. This Actor reads only the public course pages, so it returns course metadata, reviews and syllabus content and no learner activity at all.
Where is the LinkedIn Learning API documentation for this Actor?
The input schema documents every parameter, the Output Format section above documents the fields you will use most, and the two sample rows show the full shape of a search result and a full course record. The Actor page's API tab shows the REST API calls that start a run from curl, Node or Python, for any API integration that cannot use this Python client.
How do I use the LinkedIn Learning API from Python?
Clone this repo, run uv sync, put your Apify token in .env, and run uv run python linkedin-learning-api-example.py. The rows() helper shows the whole pattern: call the Actor with a run_input dictionary, then iterate the run's default dataset.
Can I use the LinkedIn Learning API with MCP or Claude?
Yes. The install sections below add the Actor as an MCP tool in Claude Code (free trial), Claude Cowork Desktop (free trial), Claude on the web, Cursor and ChatGPT. Once connected, an agent can search the catalog and pull full course records on its own.
Install in Claude Cowork Desktop
[Install in Claude Cowork Desktop]
Cowork is the desktop app's automation mode. To give it the LinkedIn Learning API as a tool, add the Apify MCP server as a connector.
- Open the Claude desktop app and go to Settings → Connectors (or Settings → Developer → Edit Config to edit
claude_desktop_config.jsondirectly).- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Add the Apify MCP server, preloaded with only this Actor:
- Restart the app. When Cowork first calls the tool, complete the OAuth prompt in your browser, or add your Apify API token in the connector settings to skip OAuth.
- In a Cowork chat, confirm the tool is available and ask it to run the LinkedIn Learning API.
Download the desktop app and start a free trial: https://claude.ai/referral/uIlpa7nPLg More help: https://docs.apify.com/platform/integrations/claude-desktop
Install in Claude Code
Claude Code is the command-line tool. Add the Actor's MCP server with one command:
To use a token instead of browser OAuth:
Then verify with claude mcp list, or run /mcp inside a session. Ask Claude Code to call the LinkedIn Learning API.
Try Claude Code free: https://claude.ai/referral/uIlpa7nPLg Claude Code MCP docs: https://code.claude.com/docs/en/mcp
Install in Claude (website)
On claude.ai you add Apify as a connector, then enable just this Actor's tool.
- Go to Settings → Connectors → Browse connectors and search for Apify MCP server. Install it (enable or update if prompted).
- When connecting, authenticate with your Apify API token, and enable the tool
johnvc/linkedin-learning-api. - In any chat, open + → Connectors and turn on Apify.
- Alternatively, choose Add custom connector and paste the full MCP URL
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api, using OAuth when prompted. - Ask Claude to run the LinkedIn Learning API.
Open Claude on the web: https://claude.ai
Install in Cursor
Cursor reads MCP servers from a project file at .cursor/mcp.json.
- In your project, create
.cursor/mcp.json:
- If you prefer token auth over browser OAuth, add a header:
- Open Cursor → Settings → MCP and confirm the apify server is connected (green dot).
- In Composer or Chat, ask Cursor to call the LinkedIn Learning API.
New to Cursor? Get it here: https://cursor.com/referral?code=XQP4VBLI3NNX
Install in ChatGPT
ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).
- Click your profile icon, then go to Settings > Apps. If you do not see a Create app button, open Advanced settings and enable Developer mode.
- Click Create app and fill out the form:
- Name: Apify
- MCP Server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api - Authentication: OAuth
- Click Create and authorize the connection with Apify.
- To use the app in a conversation, click + in the chat, choose Developer mode, and select Apify.
More help: https://docs.apify.com/platform/integrations/mcp
🌐 About Alpha OSINT
This example repo is part of Alpha OSINT, toolset of financial and operations data sources and APIs. See the LinkedIn Learning API source page for related tools and use cases. For support or requests for this actor, please start a ticket directly on our support page.
Made with care by johnvc on Apify.
Last Updated: 2026.10.27
来源:README.md,提交 456a45f
工具
0版本历史
2- v1.1.0最新Nov 7, 2026
- v1.0.0Nov 3, 2026
评分
已满足适用检查项的 83%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证不适用
托管服务按其提供方的条款使用,因此这里不要求许可证。此检查项不计入百分比。