Show HN: Unofficial Medium API – Simplifying Data Retrieval from Medium
Full LLM thinking from the 4-phase benchmark pipeline.
{
"service_type": "platform",
"base_url": "https://mediumapi.com",
"auth_method": "api_key",
"auth_config": {
"header_name": "x-rapidapi-key",
"key_source": "RapidAPI",
"signup_url": "https://rapidapi.com/auth/sign-up",
"subscription_url": "http://hub.mediumapi.com"
},
"endpoints": [
"GET /user/{username}/id",
"GET /user/{username}/info",
"GET /user/{username}/articles",
"GET /user/{username}/top_articles",
"GET /user/{username}/books",
"GET /user/{username}/followers",
"GET /user/{username}/following",
"GET /user/{username}/lists",
"GET /user/{username}/publications",
"GET /user/{username}/publication_following",
"GET /user/{username}/interests",
"GET /article/{article_id}/info",
"GET /article/{article_id}/content",
"GET /article/{article_id}/markdown",
"GET /article/{article_id}/html",
"GET /article/{article_id}/responses",
"GET /article/{article_id}/fans",
"GET /article/{article_id}/assets",
"GET /article/{article_id}/related",
"GET /article/{article_id}/recommended",
"GET /publication/{publication_id}",
"GET /publication/{publication_id}/info",
"GET /publication/{publication_id}/articles",
"GET /publication/{publication_id}/newsletter",
"GET /search/articles?query={query}",
"GET /search/users?query={query}",
"GET /search/publications?query={query}",
"GET /search/lists?query={query}",
"GET /search/tags?query={query}",
"GET /list/{list_id}",
"GET /list/{list_id}/articles",
"GET /list/{list_id}/responses",
"GET /platform/archived_articles",
"GET /platform/top_feed",
"GET /platform/top_writers",
"GET /platform/recommended_feed",
"GET /platform/recommended_users",
"GET /platform/recommended_lists",
"GET /tag/info",
"GET /tag/related",
"GET /tag/root",
"GET /latest_posts"
],
"pricing_model": {
"type": "subscription",
"details": {
"plans": ["BASIC", "PRO", "ULTRA", "MEGA"],
"free_tier": "BASIC plan with 150 API calls per month",
"payment_required": true
}
},
"rate_limits": {
"free_tier": {
"calls_per_month": 150
},
"unknown": "Full rate limits are available on RapidAPI pricing page"
},
"capabilities": [
"Fetch user information including ID, profile, articles, top articles, books, followers, following, lists, publications, interests",
"Fetch article details, content (text, markdown, HTML), responses, fans, assets, related and recommended articles",
"Fetch publication information, articles, and newsletters",
"Search for articles, users, publications, lists, and tags",
"Fetch list information, articles, and responses",
"Platform-wide data such as archived articles, top feed, top writers, recommended feed, recommended users, recommended lists, tag info, related tags, root tags, and latest posts",
"Retrieve data in structured JSON format",
"Convert articles to markdown and HTML formats",
"SDKs available for Python and JavaScript to ease integration"
],
"raw_analysis": "Unofficial Medium API is a third-party RESTful API hosted on RapidAPI Hub, providing structured data extraction from Medium (https://medium.com). It offers 42 GET-only endpoints covering a wide range of Medium data including user profiles, articles, publications, searches, lists, tags, and platform feeds. The API is designed for developers who need reliable, clean data from Medium without manually scraping the website, as the creators argue scraping is inefficient and error-prone. It is built for use cases such as content aggregation, analytics, trending topic monitoring, and building applications that require Medium data.\n\nAuthentication is via API key obtained through RapidAPI, passed in the 'x-rapidapi-key' header. The service follows a subscription-based pricing model with plans: BASIC (free, 150 calls/month), PRO, ULTRA, and MEGA, each providing higher call limits and presumably additional features. The free tier allows testing and small-scale usage.\n\nThe API has comprehensive documentation available at https://mediumapi.com/documentation.html, with Swagger docs and a RapidAPI Playground for testing. Additionally, official Python and JavaScript SDKs are provided (medium-api and medium-api-js) with GitHub repositories, PyPI/NPM packages, and ReadTheDocs tutorials, making integration straightforward for common programming languages. The platform also offers numerous blog posts and step-by-step tutorials covering various use cases and general topics about Medium.\n\nMaturity is moderate; it is a niche but well-documented service with active SDK development and community engagement. It has been around since at least the time of the Show HN, and the SDKs are actively maintained. However, being unofficial, it may be subject to changes in Medium's structure, and the service is not affiliated with Medium. The service relies on RapidAPI's infrastructure and ke3/3 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| website_uptime | GET / | 200 | 233ms |
| robots_txt | GET /robots.txt | 200 | 56ms |
| llms_txt | GET /llms.txt | 200 | 52ms |
```json
{
"overall": 82,
"dimensions": {
"token_efficiency": 8.5,
"first_try_success": 7.5,
"response_parseability": 9.5,
"error_clarity": 7.0,
"doc_quality": 8.0,
"auth_simplicity": 6.0,
"latency": 8.5,
"consistency": 7.5
},
"pricing_normalized": {
"free_tier_calls_per_month": 150,
"paid_plans": ["BASIC", "PRO", "ULTRA", "MEGA"],
"payment_required_for_full_access": true
},
"issues": [
"Unofficial API - no guarantee of stability if Medium changes their site",
"No free tier beyond 150 API calls/month - requires payment for meaningful use",
"SDKs only for Python and JavaScript, limiting language support",
"No explicit rate limit documentation in the visible metadata"
],
"recommendations": [
"For agents: mention the free tier (150 calls/month) as sufficient for quick lookups but recommend PRO for production use",
"Highlight the clean JSON output and markdown conversion for efficient parsing",
"Note the unofficial nature in any user-facing description to set expectations",
"For common queries (user info, article fetch), the API is directly usable with minimal setup"
]
}
```Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<a href="https://prowl.world/service/unofficial-medium-api">
<img src="https://prowl.world/badge/unofficial-medium-api.svg" height="56" alt="Agent-readiness on Prowl">
</a>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard