LinkedIn Learning Courses Scraper avatar

LinkedIn Learning Courses Scraper

Pricing

$2.50 / 1,000 course scrapeds

Go to Apify Store
LinkedIn Learning Courses Scraper

LinkedIn Learning Courses Scraper

Extract LinkedIn Learning course data at scale: titles, instructors, durations, ratings, learner counts, difficulty levels and skills. Search by keyword with filters, get structured JSON/CSV in seconds. No login or cookies required.

Pricing

$2.50 / 1,000 course scrapeds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

LinkedIn Learning Courses Scraper πŸŽ“

Search the LinkedIn Learning course catalog by keyword with the same filters the platform offers β€” content type, difficulty level, course length, software and sort order. Get back clean, structured JSON with course descriptions, instructors, exact course length, ratings, difficulty and skills covered. No login or cookies required.

Built for L&D platforms benchmarking their libraries, ed-tech market researchers sizing demand by topic, and course creators doing competitive analysis before recording a single lesson.

✨ What you get

One record per unique course:

FieldDescription
title / courseUrl / slugThe course and its canonical LinkedIn Learning URL
entityTypeCOURSE, LEARNING_PATH or VIDEO
instructorText / instructorsThe byline plus structured instructors with their job titles
parentCourseTitleFor video results: the course the video belongs to
workloadIso / workloadText / durationTextCourse length as ISO-8601 (PT2H50M54S) and human-readable (2h 50m)
descriptionThe course description
providerContent provider (e.g. LinkedIn Learning)
rating / ratingCountAverage learner rating (out of 5) and number of ratings
viewersCount / learnersCountCatalog viewers and historical enrollment where shown
releasedAtRelease date (YYYY-MM-DD)
difficultyBeginner / Intermediate / Advanced
skillsSkills/topics the course covers
language / thumbnailUrlCourse language and artwork
keyword / position / searchUrl / scrapedAtProvenance

βš™οΈ Options

  • Keywords β€” any number of topics, skills or tools; each gets its own result quota.
  • Content type β€” full courses (default), curated learning paths, or individual videos.
  • Filters β€” exactly like the linkedin.com/learning filter panel: difficulty level, course length brackets, software names, and sort (relevance / popularity / recency).
  • Scrape full course details β€” opens each course page for the description, instructors, exact length, rating, difficulty, skills, learner count and release date. Turn it off for a faster list-level run.
  • Expand coverage β€” the public course search has no pagination: every query returns one page of up to ~50 results. This option honestly works around that by re-running each keyword under the other two sort orders and deduplicating, typically surfacing 1.5–2x more unique courses per keyword.

πŸš€ Example

Input:

{
"keywords": ["python", "data analysis"],
"entityType": "COURSE",
"difficultyLevel": ["BEGINNER", "INTERMEDIATE"],
"durations": ["BETWEEN_1_TO_2_HOURS", "BETWEEN_2_TO_3_HOURS"],
"sortBy": "POPULARITY",
"expandCoverage": true,
"maxCoursesPerKeyword": 50,
"enrichDetails": true
}

One record from the output:

{
"keyword": "python",
"slug": "advanced-python-23931756",
"courseUrl": "https://www.linkedin.com/learning/advanced-python-23931756",
"title": "Advanced Python",
"entityType": "COURSE",
"instructorText": "Joe Marini",
"instructors": [
{
"name": "Joe Marini",
"jobTitle": "2X Exit Founder | Developer Relations and Partnerships Ecosystem Advocate | Technology Education Instructor with 10M Learners"
}
],
"durationText": "2h 50m",
"workloadIso": "PT2H50M54S",
"workloadText": "2h 50m",
"description": "Take your Python skills to the next level in this hands-on, interactive course with coding challenges in CoderPad.",
"provider": "LinkedIn Learning",
"rating": 4.7,
"ratingCount": 157,
"viewersCount": 73836,
"learnersCount": 12741,
"releasedAt": "2024-12-09",
"difficulty": "Advanced",
"skills": ["Python (Programming Language)"],
"language": "en",
"thumbnailUrl": "https://media.licdn.com/dms/image/v2/D4D0DAQGl3s1fBLp7kg/learning-public-crop_675_1200/…",
"position": 2,
"searchUrl": "https://www.linkedin.com/learning/search?keywords=python",
"scrapedAt": "2026-07-24T18:40:11.000Z"
}

πŸ’‘ Use cases

  • Competitive analysis for course creators β€” before producing a course, see every existing title on the topic, who teaches it, how long it is, how it is rated and when it was last refreshed.
  • Ed-tech market research β€” map catalog depth, difficulty mix and release cadence per skill area; spot topics with old, low-rated coverage (content gaps).
  • L&D benchmarking β€” compare your internal library against the LinkedIn Learning catalog per skill, difficulty and duration bracket.
  • Skills intelligence β€” track which tools and skills get fresh course investment quarter over quarter.
  • Content curation β€” build ranked shortlists of top-rated, recent courses per topic for learning paths and newsletters.

❓ FAQ

Do I need a LinkedIn account or cookies? No. The actor only reads the public, logged-out course catalog.

Why do I get at most ~50 results per keyword? That is everything LinkedIn Learning's public search returns for a query β€” it serves a single page with no pagination for visitors. The Expand coverage option re-runs each keyword under the other sort orders and dedupes, which typically surfaces 1.5–2x more unique courses. For broad topics, the most effective strategy is several narrower keywords (e.g. "excel pivot tables", "excel formulas", "excel vba" instead of just "excel").

What does "Scrape full course details" add? The list page only shows title, byline, length, viewers and release date. Enrichment opens each course page and adds the description, structured instructors with job titles, exact ISO length, rating and rating count, difficulty, skills, learner enrollment and language.

Are results deduplicated? Yes β€” by course slug, across all keywords and sort variants in a run. You are never billed twice for the same course.

Can I scrape learning paths or single videos? Yes β€” set Content type to LEARNING_PATH or VIDEO. Note that detail enrichment is richest for courses; video and learning-path pages expose less structured data, so some fields may be null.