Linkedin Learning

io.github.johnisanerdPublished by GitHub account johnisanerdv1.1.0Updated Nov 7, 2026

LinkedIn Learning course data: ratings, syllabus, skills. Paid, on Apify's hosted MCP.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryData & Analytics

Overview

AI-generated overview

An Apify-hosted MCP server that lets an assistant search the public LinkedIn Learning catalog and pull course records, reviews and syllabi.

What you can do
  • Search the public LinkedIn Learning catalog by keyword or topic, filtered by level, duration, software and entity type.
  • Fetch full course records for course, lesson or learning path URLs, including ratings, enrollment counts, instructors, skills and certificates.
  • Read written learner reviews with reviewer name, job title and profile link.
  • Inspect the syllabus lesson by lesson, including per-lesson free-preview flags and free lesson counts.
  • Export result rows as JSON, CSV or Excel, and schedule recurring runs for new releases or refreshed ratings.
When to use it
Useful when you want course catalog research, ratings and review text, or syllabus and free-preview details from LinkedIn Learning without a site license or login, for example building a course comparison dataset or tracking new releases on a topic.
Requirements
A remote endpoint on Apify's hosted MCP server, reached through OAuth sign-in or an Apify API token sent as a bearer Authorization header. Runs are billed to an Apify account. The README's Python client path additionally needs Python 3.11 or newer, uv and an APIFY_API_TOKEN.
Before you install
Paid service: rows are billed per result and per full course record, plus Apify platform events, so confirm data shape with small runs before raising maxItems. Enabling expandWithFilters or enrichDetails returns more billable rows. It reads only public pages and does not access learner activity or licensed reporting data.

Installation

In SourceWeft

  1. Open Linkedin Learning in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.johnisanerd%2Flinkedin-learning/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "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.

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

[Apify MCP servers overview]

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.

bash
git clone https://github.com/johnisanerd/Apify-LinkedIn-Learning-API.gitcd Apify-LinkedIn-Learning-APIuv synccp .env.example .env          # paste your token into .envuv run python linkedin-learning-api-example.py

Each example is a separate flag:

bash
uv run python linkedin-learning-api-example.py --example default      # search "python", 5 rowsuv run python linkedin-learning-api-example.py --example catalog      # course catalog rows, each printed as JSONuv run python linkedin-learning-api-example.py --example reviews      # written reviews for one courseuv run python linkedin-learning-api-example.py --example new-courses  # newest releases on a topicuv run python linkedin-learning-api-example.py --example all

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:

bash
export APIFY_API_TOKEN="paste_your_real_token_here"   # replace with the token from your Apify accountuv run python linkedin-learning-api-example.py

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 queries or topics, narrowed with sortBy, difficultyLevel, entityType, duration and softwareNames.
  • LinkedIn Learning course catalog download: expandWithFilters re-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, lesson or learning_path row for each.
  • enrichDetails turns a search into full course records in one run, billed once per row at the full-record rate.
  • LinkedIn Learning free courses: freeLessonCount and the per-lesson isFree flag in tableOfContents show how much of each course is watchable without a subscription.
  • Online courses dataset: run many queries or topics in one search and export the rows from every query, each labelled with its searchQuery, as JSON, CSV or Excel.

Data Quality

  • Each review carries body, rating, authorName, authorJobTitle, authorProfileUrl and datePublished.
  • Every lesson in tableOfContents has its own description, durationSeconds, url and isFree flag.
  • courseUrl is the canonical link with tracking parameters stripped; within each query (and within a details run) 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.
  • no_results and error rows 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:

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:

json
{  "mode": "search",  "queries": ["python"],  "sortBy": "RELEVANCE",  "difficultyLevel": "ANY",  "entityType": "COURSE",  "duration": "ANY",  "maxItems": 5}

Advanced, a filtered search enriched to full records:

json
{  "mode": "search",  "queries": ["excel"],  "softwareNames": ["Microsoft Excel"],  "difficultyLevel": "BEGINNER",  "duration": "BETWEEN_1_TO_2_HOURS",  "sortBy": "POPULARITY",  "maxItems": 10,  "enrichDetails": true,  "maxConcurrency": 5}

Details mode, full records for URLs you already have:

json
{  "mode": "details",  "courseUrls": [    "https://www.linkedin.com/learning/python-essential-training-18764650",    "https://www.linkedin.com/learning/paths/getting-started-with-python"  ]}

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.

ParameterTypeRequiredDefaultDescription
modestringyessearchsearch to find courses by keyword with filters, or details to pull the full record for course URLs you already have.
queriesarray of stringsearch mode, unless topics is setprefilled ["python"]Keywords to search, one per line. Each query is searched separately and its rows are labelled with the query that found them. Up to 25.
topicsarray of stringsearch mode, unless queries is set[]LinkedIn Learning topic slugs or topic URLs to browse, such as python or https://www.linkedin.com/learning/topics/python. Up to 25.
sortBystringnoRELEVANCERELEVANCE, POPULARITY or RECENCY.
difficultyLevelstringnoANYANY, BEGINNER, INTERMEDIATE or ADVANCED.
entityTypestringnoANYANY, COURSE, VIDEO or LEARNING_PATH.
durationstringnoANYANY, BETWEEN_0_TO_10_MIN, BETWEEN_10_TO_30_MIN, BETWEEN_30_TO_60_MIN, BETWEEN_1_TO_2_HOURS, BETWEEN_2_TO_3_HOURS or MORE_THAN_3_HOURS.
softwareNamesarray of stringno[]Keep only courses that teach this tool, using LinkedIn's own label such as Python, Microsoft Excel, SQL, ChatGPT or Claude. The schema accepts up to 10 values, but LinkedIn applies only the first label it receives, so pass one label per run and start a separate run for each additional label.
maxItemsintegerno50Courses to return per query, 1 to 1000. LinkedIn serves at most 50 per query and filter combination, so ask for more only with expandWithFilters on.
expandWithFiltersbooleannofalseRun the same query again across LinkedIn's own filter combinations and merge the unique courses. The only way past the 50-per-query ceiling; returns more billable rows.
enrichDetailsbooleannofalseOpen each course found by the search and return its full record. Enriched rows are billed at the full-record rate instead of the search rate, never both.
courseUrlsarray of stringdetails modeprefilled with one course URL, default []Course, lesson or learning path URLs to collect in full, one per line. Up to 200 per run.
maxConcurrencyintegerno5How many course pages to read at once, 1 to 10, in details mode and during enrichment.
requestTimeoutSecsintegerno40How long to wait for a single page before retrying it, 10 to 120 seconds.

Output Format

A search_result row:

json
{  "position": 1,  "title": "Python Essential Training",  "courseUrl": "https://www.linkedin.com/learning/python-essential-training-18764650",  "courseId": "18764650",  "entityType": "COURSE",  "instructors": [{ "name": "Ryan Mitchell" }],  "durationText": "4h 23m",  "durationSeconds": 15780,  "thumbnailUrl": "https://media.licdn.com/dms/image/v2/D560DAQEruxcXLwzu_A/l...",  "viewersText": "646,624 viewers",  "releaseText": "Released Jan 25, 2023",  "resultType": "search_result",  "searchQuery": "python",  "searchType": "query",  "appliedFilters": { "sortBy": "RELEVANCE" },  "approximateTotalResults": 9816,  "fetchedAt": "2026-08-27T18:14:05.123456+00:00"}

A course_detail row, trimmed to one syllabus section and one review:

json
{  "resultType": "course_detail",  "sourceUrl": "https://www.linkedin.com/learning/python-essential-training-18764650",  "courseUrl": "https://www.linkedin.com/learning/python-essential-training-18764650",  "courseId": "18764650",  "title": "Python Essential Training",  "description": "Get a comprehensive overview of the Python programming language.",  "difficultyLevel": "Beginner",  "provider": "LinkedIn Learning",  "language": "en",  "instructors": [    {      "name": "Ryan Mitchell",      "jobTitle": "Principal Software Engineer",      "profileUrl": "https://www.linkedin.com/in/remitchell",      "imageUrl": "https://media.licdn.com/dms/image/v2/C5603AQHi4kzL_mpFUQ/p..."    }  ],  "skills": [    { "name": "Python (Programming Language)", "url": "https://www.linkedin.com/learning/topics/python" }  ],  "categoryPath": ["All topics", "Technology", "Software Development", "Programming Languages"],  "dateCreated": "2023-01-25",  "datePublished": "2023-01-25",  "durationText": "PT4H23M9S",  "durationSeconds": 15789,  "enrollmentCount": 646624,  "ratingValue": 4.7,  "ratingCount": 17489,  "reviews": [    {      "rating": 5,      "body": "Clear and well paced.",      "authorName": "Takaaki Iwai",      "authorJobTitle": "Supply Chain Lead",      "authorProfileUrl": "https://jp.linkedin.com/in/example",      "datePublished": "2026-08-21T05:38:27.264Z"    }  ],  "tableOfContents": [    {      "section": "Introduction",      "items": [        {          "title": "Getting started with Python",          "durationText": "50s",          "durationSeconds": 50,          "url": "https://www.linkedin.com/learning/python-essential-training-18764650/getting-started-with-python",          "isFree": true,          "description": "Meet the instructor and preview key topics."        }      ]    }  ],  "lessonCount": 56,  "freeLessonCount": 10,  "hasCertificate": true,  "certificateName": "LinkedIn Learning Certificate of Completion",  "accessModel": "Subscription",  "thumbnailUrl": "https://media.licdn.com/dms/image/v2/D560DAQEruxcXLwzu_A/l...",  "parseSource": "jsonld",  "fetchedAt": "2026-08-27T18:14:05.123456+00:00"}

Fields you will use most:

FieldTypeRowsDescription
resultTypestringallsearch_result, course_detail, lesson, learning_path, no_results or error.
titlestringsearch, detail, lesson, pathCourse, lesson or learning path title as published.
courseUrlstringsearch, detail, lessonCanonical course link with tracking parameters removed.
courseIdstringsearch, detail, lessonIdentifier taken from the trailing number in the course URL, or the URL slug when the course has no number; lesson rows carry their parent course's id.
entityTypestringsearchCOURSE, VIDEO or LEARNING PATH.
instructorsarraysearch, detail, lessonName on search rows; name, job title, profile link and photo on full records.
durationText, durationSecondsstring, integersearch, detail, lessonLength as displayed on search rows, ISO 8601 on detail rows, plus whole seconds.
viewersText, releaseTextstringsearchViewer count and release date as shown on the search card.
approximateTotalResultsintegersearchHow many courses LinkedIn reports for the query. A size signal, not an exact count.
ratingValue, ratingCountnumber, integerdetailAverage learner rating out of 5 and how many learners rated.
enrollmentCountintegerdetailHow many people have taken the course.
reviewsarraydetailWritten reviews: rating, body, authorName, authorJobTitle, authorProfileUrl, datePublished.
tableOfContentsarraydetailEvery section and lesson with title, description, durationSeconds, url and isFree.
lessonCount, freeLessonCountintegerdetailLessons in the course and how many can be watched without a subscription.
skillsarraydetailSkills taught, each linked to its LinkedIn Learning topic page.
hasCertificate, certificateNameboolean, stringdetailWhether a certificate of completion is awarded, and its name.
pathUrl, courses, courseCountstring, array, integerlearning pathThe path link, its ordered member courses and how many there are.
httpStatusintegererrorStatus code LinkedIn returned, when there was one.
fetchedAtstringallWhen the row was collected, in UTC.

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:

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.

  1. Open the Claude desktop app and go to Settings → Connectors (or Settings → Developer → Edit Config to edit claude_desktop_config.json directly).
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the Apify MCP server, preloaded with only this Actor:
json
{  "mcpServers": {    "apify": {      "command": "npx",      "args": [        "-y",        "mcp-remote",        "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api"      ]    }  }}
  1. 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.
  2. 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

[Install in Claude Code]

Claude Code is the command-line tool. Add the Actor's MCP server with one command:

bash
claude mcp add --transport http apify \  "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api"

To use a token instead of browser OAuth:

bash
claude mcp add --transport http apify \  "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api" \  --header "Authorization: Bearer YOUR_APIFY_TOKEN"

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)

[Install in Claude (website)]

On claude.ai you add Apify as a connector, then enable just this Actor's tool.

  1. Go to Settings → Connectors → Browse connectors and search for Apify MCP server. Install it (enable or update if prompted).
  2. When connecting, authenticate with your Apify API token, and enable the tool johnvc/linkedin-learning-api.
  3. In any chat, open + → Connectors and turn on Apify.
  4. 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.
  5. Ask Claude to run the LinkedIn Learning API.

Open Claude on the web: https://claude.ai


Install in Cursor

[Install in Cursor]

Cursor reads MCP servers from a project file at .cursor/mcp.json.

  1. In your project, create .cursor/mcp.json:
json
{  "mcpServers": {    "apify": {      "url": "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api"    }  }}
  1. If you prefer token auth over browser OAuth, add a header:
json
{  "mcpServers": {    "apify": {      "url": "https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-learning-api",      "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }    }  }}
  1. Open Cursor → Settings → MCP and confirm the apify server is connected (green dot).
  2. 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

[Install in ChatGPT]

ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).

  1. 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.
  2. 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
  3. Click Create and authorize the connection with Apify.
  4. 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

Source: README.md at commit 456a45f

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v1.1.0LatestNov 7, 2026
  2. v1.0.0Nov 3, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.