Tumblr APITumblr.com ↗
Search Tumblr posts, blog profiles, and communities by keyword. Retrieve blog metadata, post engagement counts, tags, avatars, and pagination cursors via 4 endpoints.
What is the Tumblr API?
This API provides 4 endpoints for querying Tumblr data: search posts by keyword, look up blog profiles, discover communities, and fetch detailed metadata for a specific blog. The search_artworks endpoint returns post arrays with fields like note_count, tags, blog_name, and slug, while get_profile exposes theme settings, NSFW status, and last-activity timestamps for any named blog.
curl -X GET 'https://api.parse.bot/scraper/84acba45-7b17-4f3b-b666-ad4c0ddc5db1/search_artworks?mode=top&limit=5&query=digital+art' \ -H 'X-API-Key: $PARSE_API_KEY'
Search Tumblr for artwork/post results by keyword. Returns posts sorted by popularity (top) or recency (recent). Each call fetches one page; use the returned next_cursor to paginate. One upstream round-trip per call.
| Param | Type | Description |
|---|---|---|
| mode | string | Sort order for results. Omitting defaults to 'top'. |
| limit | integer | Number of posts per page, 1-20. |
| queryrequired | string | Search query string (e.g. 'digital art', 'landscape painting'). |
| cursor | string | Pagination cursor from a previous response's next_cursor field. Omit for the first page. |
{
"type": "object",
"fields": {
"mode": "the sort mode used",
"posts": "array of post objects with id, blog_name, blog_title, blog_url, post_url, slug, date, timestamp, summary, tags, note_count, like_count, reblog_count, reply_count, type, short_url, avatar_url",
"query": "the search query echoed back",
"next_cursor": "string pagination cursor for the next page, or null if no more results"
},
"sample": {
"data": {
"mode": "top",
"posts": [
{
"id": "825065188753604608",
"date": "2026-08-16 01:24:39 GMT",
"slug": "physical-manifestations-of-health-bar",
"tags": [
"art",
"digital art",
"procreate"
],
"type": "regular",
"summary": "physical manifestations of health bar?",
"blog_url": "https://www.tumblr.com/aphractal2",
"post_url": "https://www.tumblr.com/aphractal2/825065188753604608/physical-manifestations-of-health-bar",
"blog_name": "aphractal2",
"short_url": "https://tmblr.co/ZrMYPSjpE6hqCm00",
"timestamp": 1786843479,
"avatar_url": "https://64.media.tumblr.com/2f1a721651f54ca480bcebf1d9193320/5cbdc687bd12ab78-23/s512x512u_c1/e2937aee5392757109bba7f682e78f24bcfa7e5f.pnj",
"blog_title": "Aphractal Sketches",
"like_count": 98899,
"note_count": 125700,
"reply_count": 591,
"reblog_count": 26210
}
],
"query": "digital art",
"next_cursor": "REDACTED_SESSION"
},
"status": "success"
}
}About the Tumblr API
Post and Blog Search
The search_artworks endpoint accepts a query string and an optional mode parameter (top or recent) to control sort order. Each response includes an array of post objects carrying id, blog_name, blog_title, post_url, date, timestamp, summary, tags, note_count, and like_c. Results are paginated: pass the returned next_cursor value in the next request to advance through pages. The limit parameter (1–20) controls page size.
Profile Lookup and Community Discovery
The search_profile endpoint returns blog objects matching a keyword, each with name, title, url, uuid, description, avatar_url, is_adult, ask_enabled, and up to three recent_posts. The search_communities endpoint surfaces Tumblr communities with member_count, header_image_url, tags, and avatar_url. Both endpoints share the same cursor-based pagination pattern.
Individual Blog Metadata
The get_profile endpoint retrieves a single blog by short name or full URL. The response includes uuid, is_nsfw, is_adult, updated (unix timestamp of last post activity), ask_enabled, and a theme object with avatar_shape, background_color, body_font, header_image, and title_font. This makes it useful for profiling specific blogs without running a broader search.
The Tumblr API is a managed, monitored endpoint for Tumblr.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when Tumblr.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 Tumblr.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?+
- Track engagement trends on art posts by comparing
note_countacross keyword searches over time - Audit whether a blog accepts questions by checking the
ask_enabledfield fromget_profile - Build a Tumblr community directory by indexing
member_countandtagsfromsearch_communities - Identify recently active blogs in a niche using the
updatedtimestamp fromget_profile - Aggregate tag sets from
search_artworksto map tag co-occurrence in a topic area - Surface blog avatars and descriptions for a curated blog discovery feed using
search_profile - Check whether a blog is flagged as adult or NSFW before displaying it in a content platform
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Tumblr have an official developer API?+
What does `search_artworks` return beyond the post text?+
blog_name, blog_title, blog_url, post_url, slug, date, timestamp, summary, tags (array), note_count, and like_c. It does not include full post body HTML or media attachments. The API covers the metadata and engagement signals surfaced in search results.Can I retrieve the actual posts published on a specific blog, not just its profile metadata?+
get_profile endpoint returns blog-level metadata (theme, activity timestamp, NSFW flags, avatar), and search_profile includes up to 3 recent posts per blog in search results, but there is no dedicated endpoint for paginating through all posts on a given blog. You can fork this API on Parse and revise it to add a blog-posts endpoint.How does pagination work across the search endpoints?+
search_artworks, search_profile, search_communities) return a next_cursor string in each response. Pass this value as the cursor parameter in the next request to retrieve the following page. When next_cursor is null, there are no further results for that query.Are post images or media URLs returned by the search endpoints?+
search_artworks returns text-oriented fields like summary, tags, and engagement counts rather than image URLs. Blog avatars (avatar_url) and community header images (header_image_url) are available from search_profile, search_communities, and get_profile. You can fork this API on Parse and revise it to surface media attachments if that data is available for the post types you need.