
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 分
- 授權條款不適用
託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。