Studocu APIstudocu.com ↗
Retrieve Studocu study documents, course document lists, institution details, user profiles, and document recommendations via a clean REST API.
What is the Studocu API?
The Studocu API exposes 5 endpoints covering study documents, courses, institutions, user profiles, and document recommendations from Studocu.com. The get_document endpoint returns metadata such as title, page count, rating breakdown, premium status, and thumbnail URLs. get_course_documents delivers paginated document listings for any course, while get_document_recommendations surfaces related document references based on a given document ID.
curl -X GET 'https://api.parse.bot/scraper/29af07cf-35c7-4b4c-bbf7-18574cc219ec/get_document?document_id=122755801' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace studocu-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Studocu API — browse courses, documents, institutions, and user profiles."""
from parse_apis.studocu_api import Studocu, NotFound
client = Studocu()
# List documents for a course (limit caps total items fetched)
course = client.course(id=6835308)
for item in course.documents(limit=3):
print(item.document.id, item.course.id)
# Get full details for a specific document
doc = client.documents.get(document_id="122755801")
print(doc.title, doc.numberOfPages, doc.rating.positive)
# Browse recommendations for the document
for rec in doc.recommendations(limit=5):
print(rec.className, rec.document.id)
# Fetch an institution by ID
try:
inst = client.institutions.get(institution_id="89260")
print(inst.name, inst.level, inst.courses.count)
except NotFound as exc:
print(f"Institution not found: {exc}")
# Get a user's public profile
profile = client.user(id="54544019").profile()
print(profile.upvoteCount, profile.downloadImpactScore, profile.followers.count)
print("exercised: course.documents / documents.get / doc.recommendations / institutions.get / user.profile")
Get detailed information about a study document including title, rating, course, institution, page count, and thumbnail URLs. Returns the document's metadata but not its content.
| Param | Type | Description |
|---|---|---|
| document_idrequired | string | The numeric ID of the document. |
{
"type": "object",
"fields": {
"id": "integer document ID",
"slug": "URL-safe document slug",
"title": "string document title",
"course": "object with course id, name, code, regionCode",
"rating": "object with total, positive, negative, positiveExperienceProbability",
"category": "object with category id",
"createdAt": "ISO datetime string",
"isPremium": "boolean",
"thumbnails": "array of thumbnail objects with width, height, format, url",
"institution": "object with institution id, name, type",
"publishedAt": "ISO datetime string",
"numberOfPages": "integer page count"
},
"sample": {
"data": {
"id": 122755801,
"slug": "the-nepq-black-book-of-questions",
"title": "NEPQ 101: The Complete Black Book of Selling Questions",
"course": {
"id": 6835308,
"code": "ECO 1002",
"name": "Macro economics",
"regionCode": "en-us"
},
"rating": {
"total": 2814,
"negative": 1,
"positive": 2815,
"positiveExperienceProbability": 0.999
},
"category": {
"id": 4
},
"createdAt": "2025-04-03T05:19:03+02:00",
"isPremium": false,
"thumbnails": [
{
"url": "https://website-assets.studocu.com/img/document_thumbnails/1edf4c2696d3e5bb80550037f4db719f/thumb_115_163.png",
"width": 115,
"format": "png",
"height": 163
}
],
"institution": {
"id": 89260,
"name": "Hunter Business School",
"type": "UNIVERSITY"
},
"publishedAt": "2025-04-03T05:21:13+02:00",
"numberOfPages": 57
},
"status": "success"
}
}About the Studocu API
Document and Course Data
The get_document endpoint accepts a numeric document_id and returns a structured metadata object: document title, slug, createdAt timestamp, isPremium flag, a thumbnails array (with width, height, format, and URL per entry), a nested course object with id, name, code, and regionCode, and an institution object with id, name, and type. The rating object includes total, positive, negative, and positiveExperienceProbability — useful for ranking or filtering by document quality. Note that this endpoint returns document metadata only; full document content is not included in the response.
Browsing Course Documents and Recommendations
get_course_documents takes a required course_id and an optional limit parameter, returning a paginated array of course-document associations. Each item carries course and document IDs plus self-links, and the response includes a links object with self, next, and documents pagination links alongside a linkParameters object for constructing next-page cursors. get_document_recommendations accepts a document_id and returns an array of related document references, each with a className field and a nested document object containing an ID and links. The results array may be empty when no recommendations exist for the given document.
Institutions and User Profiles
get_institution takes a numeric institution_id and returns the institution's name, level (e.g., COMMUNITY_COLLEGE), stage, a region object with region code, a country object with country ID, a courses count, isPending boolean, and an optional shortName. If the institution is not found, the response includes a stale_input field with kind: input_not_found. get_user_profile retrieves public profile data for a user by user_id, exposing counts for uploads, followers, followingUsers, followingCourses, followingBooks, and followingStudylists, plus an integer upvoteCount and a downloadImpactScore. Missing users return the same stale_input / input_not_found pattern.
The Studocu API is a managed, monitored endpoint for studocu.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when studocu.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official studocu.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a course-material discovery tool that lists top-rated documents for a given course using
get_course_documentssorted by rating. - Display document preview thumbnails and premium-status badges in a study resource aggregator using fields from
get_document. - Rank or compare institutions by their course count and region using
get_institutiondata. - Surface related study materials alongside a viewed document using
get_document_recommendations. - Show user contribution stats — upload count, upvote count, and download impact score — in an academic leaderboard using
get_user_profile. - Paginate through all documents for a course programmatically using cursor-based
linkParametersfromget_course_documents. - Filter study materials by institution type or region by combining
get_documentinstitution fields withget_institutionlevel and country data.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Studocu have an official public developer API?+
What does `get_document` actually return — can I get the document text or file?+
How does pagination work for `get_course_documents`?+
links object with a next URL and a linkParameters object containing the parsed parameters needed to request the next page. Pass the limit parameter to control page size. Iterate using the next link until it is absent or empty.Does the API return search results — for example, finding documents by keyword or subject?+
What data is NOT available from the user profile endpoint?+
get_user_profile endpoint returns only public aggregate counts: uploads, followers, following counts, upvotes, and download impact score. Individual document titles uploaded by that user, private profile fields, or account email/contact data are not included. You can fork the API on Parse and revise it to add an endpoint that lists documents associated with a specific user.