Skip to content

LinkedIn Learning

Mode: 🔐 Browser + Cookie · Domain: linkedin.com

Read-only adapter for LinkedIn Learning courses, videos, and learning paths. Shares cookie session with linkedin.com, no Commercial Use Limit (Learning queries are separate from people-search CUL).

Commands

CommandDescription
opencli linkedin-learning searchSearch courses, videos, and paths by keyword via learning-api/searchV2
opencli linkedin-learning trendingBrowse personalized recommendation carousels via learning-api/feedRecommendationGroups
opencli linkedin-learning courseCourse detail by slug or full /learning/<slug> URL via learning-api/courses?q=slug

Usage Examples

bash
# Search
opencli linkedin-learning search "AI agent"
opencli linkedin-learning search "rust programming" --limit 20

# Personalized recommendations
opencli linkedin-learning trending --limit 10

# Course detail (slug or full URL)
opencli linkedin-learning course agentic-ai-build-your-first-agentic-ai-system
opencli linkedin-learning course https://www.linkedin.com/learning/agentic-ai-build-your-first-agentic-ai-system

# JSON output
opencli linkedin-learning search "data science" -f json

Columns

ColumnNotes
rank1-based position in upstream order
typeCOURSE / VIDEO / LEARNING_PATH / etc
titleFrom headline.title.text
instructorJoined firstName lastName of all authors
difficultyBEGINNER / INTERMEDIATE / etc (uppercase from searchV2)
duration_secLength in seconds (empty if non-SECOND unit)
ratingAverage rating to 2 decimals, computed from ratingSum/ratingCount if no averageRating
rating_countNumber of ratings
viewersCumulative viewer count
urlhttps://www.linkedin.com/learning/<slug>
ColumnNotes
rank1-based across all carousels in document order
groupCarousel title (e.g. "Top picks for you") or annotation (TOP_PICKS)
typeSame as search
titleCourse / video title
difficultySame as search
viewersCumulative viewer count
urlCourse URL

Cards are deduplicated by slug across carousels (first-seen wins).

course

ColumnNotes
titleCourse title
slugStable slug used in URL
descriptionFull course description returned by /learning-api/courses?q=slug
difficultyBeginner / Intermediate / etc (mixed case from detail endpoint)
duration_secTotal length in seconds
videos_countNumber of videos in the course
ratingAverage rating to 2 decimals (empty when /courses?q=slug omits ratings; see Caveats)
rating_countNumber of ratings (empty when omitted)
releasedActivation date (YYYY-MM-DD)
urlhttps://www.linkedin.com/learning/<slug>

Prerequisites

Caveats

  • The course-detail endpoint (/learning-api/courses?q=slug) does not always include rating / rating_count even when the search endpoint reports them for the same slug. Use search "<slug words>" to get ratings if needed; a future revision may make a second call to /learning-api/reviews?contentUrn=...&q=findByContent to fill these in.
  • trending returns personalized recommendations (carousel annotation: TOP_PICKS and similar), not a globally-ranked popularity list. The output reflects the logged-in user's recent activity and skills.
  • Voyager search-cluster endpoints (used by the standard linkedin/search jobs adapter and linkedin/people-search) do not serve Learning data; learning-api/* is the dedicated REST surface.

Limit Validation

  • search and trending cap --limit at 50 with strict-integer validation (no silent clamp).
  • course returns exactly one row by definition.

Released under the Apache-2.0 License.