LinkedIn Learning Courses Scraper avatar

LinkedIn Learning Courses Scraper

Pricing

from $0.01 / 1,000 courses

Go to Apify Store
LinkedIn Learning Courses Scraper

LinkedIn Learning Courses Scraper

Collect public LinkedIn Learning courses, lessons, and learning paths. Get titles, skills, instructors, ratings, and available reviews and syllabus data to compare courses and plan training.

Pricing

from $0.01 / 1,000 courses

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Share

🎓 Find LinkedIn Learning courses for your training plan

LinkedIn Learning Courses Scraper helps training teams, course researchers, and developers collect public course, lesson, and learning-path data. Get titles, skills, instructors, ratings, and available reviews and syllabus details in one dataset to compare training options and plan what to learn.

📚 Course, lesson, and learning-path data

Courses can include descriptions, levels, skills, category paths, instructors, dates, ratings, learner counts, written reviews, and a public syllabus. Syllabus lessons can include preview and subscription flags. Courses can also include certificate details and learning-path links.

Lesson rows include public lesson details and a parent-course link. Learning-path rows include public path details and their member courses in source order. Optional details appear only when the source provides them. Empty arrays may appear for reviews, syllabus sections, or path members.

The Actor saves the first eligible match for each source item at once and continues discovery. Later matches for the same item are ignored. discoveryInput shows only the first keyword, topic, or listing URL that led to the saved row.

  1. Choose Courses, Lessons, or Learning paths as the result type.
  2. Choose Keywords, Topics, Listing URLs, or Content URLs and fill in its fields. Only fields for that choice are used.
  3. For discovery, set any level, length, software, release-date, and sort options you need. All submitted search terms share these filters.
  4. Set Maximum results or leave it empty to return all available results until the source is exhausted.
  5. Start the run and open the dataset through Output.

Content URLs collect each submitted page directly. You can mix course, lesson, and learning-path URLs in a batch of up to 200. Each page returns its own content type, and discovery filters do not apply.

⚙️ Input

Input fields

FieldTypeWhat it does
resultTypestringRequired. Choose courses, lessons, or learningPaths for discovery. Content URLs return the type of each submitted page.
findBystringChoose keywords, topics, listingUrls, or contentUrls. Only fields for that choice are used. Defaults to keywords.
keywordsarray of stringsSearch terms. All terms use the same discovery filters.
topicsarray of stringsTopic slugs or public topic URLs, such as python or https://www.linkedin.com/learning/topics/python.
listingUrlsarray of URL objectsPublic LinkedIn Learning search or all-courses URLs. Put each link in a url field.
contentUrlsarray of URL objectsUp to 200 public course, lesson, or learning-path URLs. Put each link in a url field. Types can be mixed; discovery filters do not apply.
levelsarray of stringsKeep beginner, intermediate, or advanced discovery matches. Leave empty for all levels.
durationstringDiscovery length filter: all, under10Minutes, 10To30Minutes, 30To60Minutes, 1To2Hours, 2To3Hours, or over3Hours. Defaults to all.
softwarestringSoftware name to use as a discovery filter, such as Excel. Leave empty for any tool.
sortstringSource order for discovery: relevance, popularity, or newest. Defaults to relevance.
releasedWithinstringDiscovery release-date filter: any, month, or year. Defaults to any.
maxItemsintegerStop after this many results across the run. Minimum 1, with no fixed upper bound. Leave empty to return all available results until the source is exhausted.

The level, length, software, sort, and release-date filters apply to Keywords, Topics, and Listing URLs.

Example input

This is the public input from the successful default-input run on the current beta build:

{
"resultType": "courses",
"findBy": "keywords",
"keywords": [
"Python"
],
"duration": "all",
"sort": "relevance",
"releasedWithin": "any",
"maxItems": 10
}

🧾 Output

The results output is a string link to the collected data in the default Apify dataset. Each row is a course, lesson, or learning path. contentType, id, title, and url are required in all three shapes. Other fields appear when available. Source dates and length values stay in the form supplied by LinkedIn Learning.

Course fields

FieldTypeWhat it does
contentTypestringThe kind of public content in this row.
idstringSource content ID for joining records and checking the source.
titlestringContent title.
urlstringCanonical public content page link.
descriptionstringPublic content description.
durationstringContent length as shown by the source.
languagestringContent language listed by the source.
publishedAtstringSource publication date.
imageUrlstringContent cover image link.
instructorsarray of objectsPublic instructors for this content.
instructors[].namestringInstructor name.
instructors[].professionalTitlestringPublic job title or headline.
instructors[].profileUrlstringPublic instructor profile link.
instructors[].photoUrlstringInstructor photo link.
discoveryInputstringThe first submitted keyword, topic, or listing URL that led to this saved row.
approximateMatchCountintegerApproximate total matches reported by the source for that discovery input.
levelstringCourse level listed by the source.
skillsarray of stringsSkills taught by the course.
categoriesarray of string arraysCourse category paths listed by the source.
learnerCountintegerLearner count reported by the source.
viewerCountintegerViewer count reported by the source.
likedByCountintegerLiked-by count reported by the source.
averageRatingnumberAverage course rating reported by the source.
ratingCountintegerNumber of ratings reported by the source.
reviewsarray of objectsPublic written learner reviews. This may be empty.
reviews[].textstringReview text.
reviews[].ratingnumberRating given by the reviewer.
reviews[].authorNamestringReviewer name.
reviews[].authorTitlestringPublic reviewer job title or headline.
reviews[].authorProfileUrlstringPublic reviewer profile link.
reviews[].publishedAtstringReview date as shown by the source.
syllabusarray of objectsCourse sections in source order. This may be empty.
syllabus[].titlestringSection title.
syllabus[].lessonsarray of objectsLessons in source order.
syllabus[].lessons[].titlestringLesson title.
syllabus[].lessons[].descriptionstringPublic lesson description.
syllabus[].lessons[].durationstringLesson length as shown by the source.
syllabus[].lessons[].urlstringPublic lesson page link.
syllabus[].lessons[].isFreePreviewbooleanWhether the source offers this lesson as a free preview.
syllabus[].lessons[].requiresSubscriptionbooleanWhether the source says a subscription is needed for this lesson.
certificatesarray of objectsPublic completion-certificate details.
certificates[].namestringCertificate name.
certificates[].descriptionstringPublic certificate details.
certificates[].urlstringPublic certificate information link.
createdAtstringCourse creation date reported by the source.
lessonCountintegerTotal lessons reported by the source. This may include lessons absent from the public syllabus.
freePreviewCountintegerTotal free-preview lessons reported by the source. This may include lessons absent from the public syllabus.
accessModelstringCourse access model listed by the source, such as subscription access.
learningPathsarray of objectsLearning paths that the source lists for this course. This may be empty.
learningPaths[].titlestringLearning path title.
learningPaths[].urlstringPublic learning path page link.

Example course row

This genuine Python course row is shortened. The JSON string "..." marks omitted reviews and syllabus sections. All other values are kept as returned. These examples come from successful runs on the current beta build.

{
"contentType": "course",
"id": "python-essential-training-18764650",
"title": "Python Essential Training",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650",
"duration": "PT4H23M9S",
"imageUrl": "https://media.licdn.com/dms/image/v2/D560DAQEruxcXLwzu_A/learning-public-crop_675_1200/B56Z1oT93iKkAY-/0/1775571558434?e=2147483647&v=beta&t=J1obbigq6mj2wpN2b9Fu7Zyt6mkPdO5-NlYw1yByIOU",
"viewerCount": 654387,
"publishedAt": "2023-01-25",
"discoveryInput": "Python",
"approximateMatchCount": 398,
"description": "Get a comprehensive overview of the Python programming language and gain enough command of Python 3 to create well-designed scripts and maintain existing projects.",
"language": "en",
"instructors": [
{
"name": "Ryan Mitchell",
"professionalTitle": "O'Reilly / Wiley Author | LinkedIn Learning Instructor | Principal Software Engineer @ GLG",
"profileUrl": "https://www.linkedin.com/in/remitchell",
"photoUrl": "https://media.licdn.com/dms/image/v2/C5603AQHi4kzL_mpFUQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1649094417238?e=2147483647&v=beta&t=oRk6DnpL3tJsl4O21gRLOriJuGSt40sVxDFa5Zxuwtk"
}
],
"createdAt": "2023-01-25",
"lessonCount": 56,
"freePreviewCount": 10,
"accessModel": "Subscription",
"learningPaths": [
{
"title": "OpenEDG Python Institute: Programming with Python Professional Certificate",
"url": "https://www.linkedin.com/learning/paths/openedg-python-institute-programming-with-python-professional-certificate"
}
],
"level": "Beginner",
"skills": [
"Python (Programming Language)"
],
"categories": [
[
"All topics",
"Technology",
"Software Development",
"Programming Languages"
]
],
"likedByCount": 18748,
"learnerCount": 654387,
"averageRating": 4.7,
"ratingCount": 17613,
"reviews": [
{
"text": "its good experince",
"rating": 5,
"authorName": "Muskan Kumari",
"authorTitle": "Student at Accurate Institute of Management, Greater Noida. India",
"authorProfileUrl": "https://in.linkedin.com/in/muskan-kumari-aa8243435",
"publishedAt": "2026-10-01T09:10:23.335Z"
},
"..."
],
"syllabus": [
{
"title": "Introduction",
"lessons": [
{
"title": "Getting started with Python",
"description": "Meet the instructor and preview key topics in this course, including data types, control flow, classes, object-oriented programming, and modules. This video shows a practical, crash-course approach to Python fundamentals and how to start coding confidently.",
"duration": "PT50S",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650/getting-started-with-python",
"isFreePreview": true,
"requiresSubscription": false
},
{
"title": "Who this course is for",
"description": "This course is for anyone who wants to learn programming. Basic computer skills are required.",
"duration": "PT2M55S",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650/who-this-course-is-for-23812785",
"isFreePreview": true,
"requiresSubscription": false
},
{
"title": "Resources for this course",
"description": "In this video, learn about the resources needed for this course so you can follow along.",
"duration": "PT1M15S",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650/resources-for-this-course",
"isFreePreview": true,
"requiresSubscription": false
}
]
},
"..."
],
"certificates": [
{
"name": "LinkedIn Learning Certificate of Completion",
"description": "Share what you’ve learned, and be a standout professional in your desired industry with a certificate showcasing your knowledge gained from the course.",
"url": "https://www.linkedin.com/help/learning/answer/a598944/learning-certificates-of-completion-faqs"
}
]
}

Lesson fields

FieldTypeWhat it does
contentTypestringThe kind of public content in this row.
idstringSource content ID for joining records and checking the source.
titlestringContent title.
urlstringCanonical public content page link.
descriptionstringPublic content description.
durationstringContent length as shown by the source.
languagestringContent language listed by the source.
publishedAtstringSource publication date.
imageUrlstringContent cover image link.
instructorsarray of objectsPublic instructors for this content.
instructors[].namestringInstructor name.
instructors[].professionalTitlestringPublic job title or headline.
instructors[].profileUrlstringPublic instructor profile link.
instructors[].photoUrlstringInstructor photo link.
discoveryInputstringThe first submitted keyword, topic, or listing URL that led to this saved row.
approximateMatchCountintegerApproximate total matches reported by the source for that discovery input.
parentCourseUrlstringPublic page link for the parent course.
isFreePreviewbooleanWhether the source offers this lesson as a free preview.
requiresSubscriptionbooleanWhether the source says a subscription is needed for this lesson.

Example lesson row

This genuine lesson row is shown in full. These examples come from successful runs on the current beta build.

{
"contentType": "lesson",
"id": "python-essential-training-18764650/getting-started-with-python",
"title": "Getting started with Python - Python Essential Training",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650/getting-started-with-python",
"description": "Get a comprehensive overview of the Python programming language and gain enough command of Python 3 to create well-designed scripts and maintain existing projects.",
"duration": "PT50S",
"language": "en",
"publishedAt": "2023-01-25",
"imageUrl": "https://media.licdn.com/dms/image/v2/D560DAQEruxcXLwzu_A/learning-public-crop_675_1200/B56Z1oT93iKkAY-/0/1775571558434?e=2147483647&v=beta&t=J1obbigq6mj2wpN2b9Fu7Zyt6mkPdO5-NlYw1yByIOU",
"instructors": [
{
"name": "Ryan Mitchell",
"professionalTitle": "O'Reilly / Wiley Author | LinkedIn Learning Instructor | Principal Software Engineer @ GLG",
"profileUrl": "https://www.linkedin.com/in/remitchell",
"photoUrl": "https://media.licdn.com/dms/image/v2/C5603AQHi4kzL_mpFUQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1649094417238?e=2147483647&v=beta&t=oRk6DnpL3tJsl4O21gRLOriJuGSt40sVxDFa5Zxuwtk"
}
],
"parentCourseUrl": "https://www.linkedin.com/learning/python-essential-training-18764650",
"isFreePreview": true,
"requiresSubscription": false
}

Learning path fields

FieldTypeWhat it does
contentTypestringThe kind of public content in this row.
idstringSource content ID for joining records and checking the source.
titlestringContent title.
urlstringCanonical public content page link.
descriptionstringPublic content description.
durationstringContent length as shown by the source.
languagestringContent language listed by the source.
imageUrlstringContent cover image link.
instructorsarray of objectsPublic instructors for this content.
instructors[].namestringInstructor name.
instructors[].professionalTitlestringPublic job title or headline.
instructors[].profileUrlstringPublic instructor profile link.
instructors[].photoUrlstringInstructor photo link.
discoveryInputstringThe first submitted keyword, topic, or listing URL that led to this saved row.
approximateMatchCountintegerApproximate total matches reported by the source for that discovery input.
coursesarray of objectsMember courses in source order. This may be empty.
courses[].idstringSource course ID for joining course records.
courses[].titlestringCourse title.
courses[].urlstringCanonical course page link.
courses[].descriptionstringPublic course description.
courses[].durationstringCourse length as shown by the source.

Example learning path row

This genuine learning-path row is shown in full. These examples come from successful runs on the current beta build.

{
"contentType": "learningPath",
"id": "paths/getting-started-with-python",
"title": "Getting Started with Python",
"url": "https://www.linkedin.com/learning/paths/getting-started-with-python",
"duration": "18 hours of content",
"imageUrl": "https://media.licdn.com/dms/image/v2/C560DAQETr8p-RgTxVA/learning-public-crop_240_432/learning-public-crop_240_432/0/1600977664338?e=2147483647&v=beta&t=ZFD2wVJ20S54eJW3MggosdQvUVsfWD0qao2F8Rz2wUs",
"discoveryInput": "Python",
"approximateMatchCount": 38,
"description": "Note: This learning path will be updated on November 2, 2026. To earn your certificate of completion without interruption, complete the path before that date. If you can't, additional courses may be required.Python is one of the most in-demand programming languages. Whether you're a new programmer looking to switch careers or an experienced coder looking to expand your fit within a challenging job market, this path will provide you with the foundational skills for coding in Python.",
"language": "en",
"instructors": [
{
"name": "Joe Marini",
"professionalTitle": "Investor ᠅ 2x Exit Founder ᠅ Developer Relations & Partner Ecosystem Advocate ᠅ Technology Instructor with 10M Learners",
"profileUrl": "https://www.linkedin.com/in/joemarini",
"photoUrl": "https://media.licdn.com/dms/image/v2/C4E03AQHDjlOZBQoY7g/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1598399759707?e=2147483647&v=beta&t=v2tesTP21YOxWM3ntWCJc7nSiBGdYkqY1Sbtozd51is"
},
{
"name": "Ryan Mitchell",
"professionalTitle": "O'Reilly / Wiley Author | LinkedIn Learning Instructor | Principal Software Engineer @ GLG",
"profileUrl": "https://www.linkedin.com/in/remitchell",
"photoUrl": "https://media.licdn.com/dms/image/v2/C5603AQHi4kzL_mpFUQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1649094417238?e=2147483647&v=beta&t=oRk6DnpL3tJsl4O21gRLOriJuGSt40sVxDFa5Zxuwtk"
},
{
"name": "Kathryn Hodge",
"professionalTitle": "Software Engineer",
"profileUrl": "https://www.linkedin.com/in/blondiebytes",
"photoUrl": "https://media.licdn.com/dms/image/v2/D4D03AQGrIVVnCrSZlw/profile-displayphoto-shrink_400_400/B4DZfIjjwAH4Ak-/0/1751416454501?e=2147483647&v=beta&t=-wzLqZTL7-CXA2ctGrU3162WBIMhVVs_SSP46EMF9ag"
},
{
"name": "Barron Stone",
"professionalTitle": "Director of Product Marketing at Defense Unicorns",
"profileUrl": "https://www.linkedin.com/in/barronstone"
},
{
"name": "Jonathan Fernandes",
"professionalTitle": "AI/ML Engineer Building & Shipping Production-ready GenAI & Large Language Model Solutions Since Before ChatGPT.",
"profileUrl": "https://uk.linkedin.com/in/jonathanafernandes",
"photoUrl": "https://media.licdn.com/dms/image/v2/D4E03AQGFheTNCt6p-w/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1695575572394?e=2147483647&v=beta&t=0vDF338QvW1O2V3f1QpanosAbyEQHYSvrGPvZfx_yDw"
}
],
"courses": [
{
"id": "learning-python-25309312",
"title": "Learning Python",
"url": "https://www.linkedin.com/learning/learning-python-25309312",
"description": "This course gives you everything you need to start programming in Python, from building your first program up through working with files, data and the internet.",
"duration": "3h 41m"
},
{
"id": "python-essential-training-18764650",
"title": "Python Essential Training",
"url": "https://www.linkedin.com/learning/python-essential-training-18764650",
"description": "Get a comprehensive overview of the Python programming language and gain enough command of Python 3 to create well-designed scripts and maintain existing projects.",
"duration": "4h 23m"
},
{
"id": "python-object-oriented-programming-22888296",
"title": "Python Object-Oriented Programming",
"url": "https://www.linkedin.com/learning/python-object-oriented-programming-22888296",
"description": "Learn how to use the object-oriented features of Python, including magic methods and data classes, to write more efficient and effective code.",
"duration": "1h 56m"
},
{
"id": "learning-the-python-3-standard-library",
"title": "Learning the Python 3 Standard Library",
"url": "https://www.linkedin.com/learning/learning-the-python-3-standard-library",
"description": "Explore the Python 3 standard library. Learn how to take advantage of its built-in modules to calculate statistics, format dates and times, get content from the internet, and more.",
"duration": "2h 16m"
},
{
"id": "programming-foundations-data-structures-25191158",
"title": "Programming Foundations: Data Structures",
"url": "https://www.linkedin.com/learning/programming-foundations-data-structures-25191158",
"description": "Learn how to effectively use and implement key data structures through hands-on exercises and real-world examples in Python.",
"duration": "2h 46m"
},
{
"id": "level-up-python",
"title": "Level Up: Python",
"url": "https://www.linkedin.com/learning/level-up-python",
"description": "Want to test your Python skills? These concise, self-contained challenges let you stretch your brain and test your talents.",
"duration": "57m"
},
{
"id": "8-things-you-must-know-in-python",
"title": "8 Things You Must Know in Python",
"url": "https://www.linkedin.com/learning/8-things-you-must-know-in-python",
"description": "Learn eight things you should know to move beyond the basics of Python coding.",
"duration": "50m"
},
{
"id": "python-practice-real-world-coding-challenges",
"title": "Python Practice: Real-World Coding Challenges",
"url": "https://www.linkedin.com/learning/python-practice-real-world-coding-challenges",
"description": "Get practice using Python by completing the challenges in this project-based course.",
"duration": "46m"
}
]
}

💳 Pricing

This Actor uses pay-per-event pricing. Check the pricing panel for current prices and tiers.

EventWhat it covers
CourseOne public course saved with its available details. Nested syllabus lessons have no extra charge.
LessonOne public lesson saved on its own with its available details.
Learning pathOne public learning path saved with its available details. Nested member courses have no extra charge.

Duplicates, failures, and empty results are not charged. A lesson inside a course syllabus is not charged as a separate lesson. A course inside a learning path is not charged as a separate course.

🔌 Integrations

Open the dataset after a run, export its data, or read the structured rows through the Apify dataset API. Use the source links and IDs to connect course data to your own training reports or applications.

❓ FAQ

Can I mix courses, lessons, and learning paths in one run?

Yes, with Content URLs. Each submitted page returns its own type. For Keywords, Topics, or Listing URLs, choose one result type for the run.

Why is a field missing or a syllabus section empty?

Only public details exposed by the source are returned. Reviews, syllabus lessons, certificate details, and other optional fields may be missing or empty. Lesson and free-preview counts may include lessons absent from the public syllabus.

What happens when two search terms find the same course?

The first eligible match is saved at once. Later matches are ignored. The saved row is not updated to collect later search terms. When present, discoveryInput keeps only the first match.

Do filters apply to a course URL?

No. Discovery filters apply to Keywords, Topics, and Listing URLs. Content URLs collect the submitted pages directly.

What does an empty Maximum results field do?

It returns all available results until the source is exhausted. This does not promise complete global catalog coverage. A limit applies across the whole run, rather than separately to each keyword or URL.

Is the match count exact?

No. approximateMatchCount is the source's estimate for the discovery input. It is not the number of rows saved by the run.

Can I use this to find LinkedIn Learning free courses?

The Actor returns public access details, not a guarantee that a whole course is free. Use isFreePreview, requiresSubscription, freePreviewCount, and accessModel when returned to review the source's access rules. Free previews do not mean a full course or its certificate is free.

Does it issue a LinkedIn Learning certificate?

No. It reads publicly listed certificate information. It does not complete courses, issue certificates, or read a learner's completion history.

Can it download videos or transcripts?

No. It collects public catalog metadata. Video playback, downloads, transcripts, and exercise files are outside its scope.

Do I need a LinkedIn account?

No. The Actor collects public catalog metadata without requiring a LinkedIn account. It does not collect private recommendations or account-only data.

📝 Changelog

v0.0 (03-10-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré