Tumblr Blog Scraper
Pricing
from $1.00 / 1,000 results
Tumblr Blog Scraper
Extract public Tumblr blog profiles, descriptions, avatars, header images, post counts and available settings.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
ScrapingMonkey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract public Tumblr blog profiles from names or links. Tumblr Blog Scraper returns blog identity, title, description, avatar, header information and available post counters in one row per blog.
Turn a known list of blogs into a consistent profile inventory for editorial research, account matching or a database.
| At a glance | Details |
|---|---|
| 📥 Input | Public Tumblr blog names or blog homepage URLs. |
| 📤 Output | One blog per success row, with source input retained |
| 📄 Pagination | Each blog is an individual lookup. There is no pages-per-blog setting in this details Actor. |
| 🔐 Login required | No |
| ⚡ Processing | Up to 5 HTTP requests concurrently with automatic retries |
| 💾 Delivery | One Apify dataset view, useful flat columns and complete nested JSON |
What the Tumblr Blog scraper collects 📦
The Actor retrieves the public profile of each selected blog. Descriptions, header images and optional dates remain attached to the blog record.
Data can include:
- Blog name, UUID and public URL
- Title, description and available profile text
- Avatar variants and available header information
- Public post counts and update dates when supplied
- Available public blog settings
How to collect blogs from Tumblr 🚀
- Enter one or more supported inputs in
inputList. - Review the supported input format.
- Start the Actor.
- Open the Blogs dataset view and review the individual records.
- Export the dataset or retrieve it from your application.
{"inputList": ["staff"]}
Each blog is an individual lookup. There is no pages-per-blog setting in this details Actor.
Tumblr blogs data and complete output 📦
| Field | Type | Meaning |
|---|---|---|
status | string | Result status: success or failed. |
input | string | Original submitted input. |
name | string or null | Public name of this blog or nested object. |
uuid | string or null | Stable Tumblr blog UUID when supplied. |
url | string or null | Public source URL for this object. |
blog_view_url | string or null | Tumblr’s public blog-view URL when supplied. |
title | string or null | Public title supplied for this object. |
description | string or null | Available public description; null when not supplied. |
created_at | string or null | Creation time in an ISO-formatted date string when supplied. |
updated_at | string or null | Last update time in an ISO-formatted date string when supplied. |
total_posts | integer or null | Public total-post counter when supplied; not the number of rows collected. |
avatar_url | string or null | Selected available blog avatar URL. |
avatar_images | array or null | Available blog avatar image variants. |
avatar_images[].url | string or null | Public source URL for this object. |
avatar_images[].width | integer or null | Available image or media width in pixels. |
avatar_images[].height | integer or null | Available image or media height in pixels. |
header_image_url | string or null | Available public blog header-image URL. |
top_tags | array or null | Public top-tag names returned for the blog, when present. |
is_adult | boolean or null | Source adult-content flag for the blog when supplied. |
is_nsfw | boolean or null | Source NSFW flag when supplied. |
is_password_protected | boolean or null | Source password-protection flag when supplied; it grants no access. |
ask_enabled | boolean or null | Whether the source reports that the blog accepts asks. |
allow_anonymous_asks | boolean or null | Whether the source reports that anonymous asks are enabled. |
share_likes | boolean or null | Source setting describing whether the blog shares its likes. |
share_following | boolean or null | Source setting describing whether the blog shares followed blogs. |
share_replies | boolean or null | Source setting describing whether the blog shares replies. |
website_urls | array or null | Public website links returned or extracted from available blog information. |
Every top-level output field appears in these complete examples. The success example is normalized from a public response; its values are a snapshot and can change. Nested arrays remain inside their parent result.
Complete representative success result:
{"status": "success","input": "staff","name": "staff","uuid": "t:0aY0xL2Fi1OFJg4YxpmegQ","url": "https://staff.tumblr.com/","blog_view_url": "https://www.tumblr.com/staff","title": "Tumblr Staff","description": null,"created_at": "2008-01-30T01:55:41Z","updated_at": "2026-07-13T20:37:36Z","total_posts": 2988,"avatar_url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s512x512u_c1/81e5a61444bd4691042dff4f16c1240cb65d4642.pnj","avatar_images": [{"url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s64x64u_c1/07e3ab69e3d9c49b56066640b7f48284317eca4b.pnj","width": 64,"height": 64},{"url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s96x96u_c1/6b1ad04e43e39488e96a714e697ffa23b4f689f1.pnj","width": 96,"height": 96},{"url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s128x128u_c1/1e6bace6bd746e6d475ae494b9acff6329240bae.pnj","width": 128,"height": 128},{"url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s200x200u_c1/9a9e1788b2b9dea80348c37fd494e908a5c180d5.pnj","width": 200,"height": 200},{"url": "https://64.media.tumblr.com/dbc619ed53b0b1f9da04189686cb10e7/e72ec0c8ebd4ace0-49/s512x512u_c1/81e5a61444bd4691042dff4f16c1240cb65d4642.pnj","width": 512,"height": 512}],"header_image_url": "https://64.media.tumblr.com/c6292892f07a21ab93c8e9cf4e9aaaa5/e72ec0c8ebd4ace0-d6/s5904x3321/913ad5aa5dc43b2ff77282df49f835883692e876.png","top_tags": ["tumblr"],"is_adult": false,"is_nsfw": false,"is_password_protected": false,"ask_enabled": false,"allow_anonymous_asks": false,"share_likes": false,"share_following": false,"share_replies": true,"website_urls": []}
Complete failed result:
{"status": "failed","input": "invalid input","name": null,"uuid": null,"url": null,"blog_view_url": null,"title": null,"description": null,"created_at": null,"updated_at": null,"total_posts": null,"avatar_url": null,"avatar_images": null,"header_image_url": null,"top_tags": null,"is_adult": null,"is_nsfw": null,"is_password_protected": null,"ask_enabled": null,"allow_anonymous_asks": null,"share_likes": null,"share_following": null,"share_replies": null,"website_urls": null}
A failed row preserves input, sets status to failed, and sets every other top-level field to null. The run log records the reason. Optional successful fields can be null or empty when Tumblr does not supply them. Object fields are exposed through useful columns in the single Blogs view; arrays are not expanded into extra result rows.
Input requirements and pagination settings ⚙️
| Parameter | Type | Required | Default | Rules |
|---|---|---|---|---|
inputList | array of strings | Yes | None | Public Tumblr blog names or blog homepage URLs. At least 1 item. |
Enter supported blog names or Tumblr blog URLs. Use Blog Search Scraper to discover blogs and Blog Posts Scraper to collect their publications.
Supported examples include staff, @staff, https://www.tumblr.com/staff, https://staff.tumblr.com/ and https://www.tumblr.com/blog/view/staff. Use a blog homepage for these actors; post links are separate inputs for Post Scraper.
Duplicate normalized inputs are processed once. Within the collection for one source input, repeated records are removed while distinct interactions or objects remain separate. The same object returned for different source inputs retains its source relationship.
There is no result-page setting. Each unique target is looked up individually, and nested fields remain within that result row.
Tumblr blogs use cases 🎯
Blog inventories
Match names and links to stable blog identities and preserve their current public descriptions.
Editorial source review
Inspect the title, description and visual identity of selected sources before adding them to a research list.
Profile change snapshots
Repeat a saved input list and compare returned descriptions or header fields in your own database.
Pricing and saved-result behavior 💰
Check the Actor’s Pricing tab for the active pricing model and current rate. Store settings can change, so this README does not claim a fixed price or runtime.
Under dataset-item pricing:
- Each successful result represents one blog for its source input.
- An invalid or unavailable input, an input with no accessible results, or an exhausted request can produce a
failedrow. - Retry attempts and supporting requests do not create extra dataset rows by themselves.
- Nested media, profile information and other arrays remain part of their parent row.
- A normal empty continuation after earlier successes creates no additional row.
- Saved failed rows are not assumed to be free; check their treatment in the active pricing configuration.
More inputs can produce more saved rows. Start with a small run and check actual usage before increasing the workload.
Tumblr blogs API 🔌
Replace $ACTOR_ID with the identifier shown in this Actor’s API tab and $APIFY_TOKEN with your Apify token.
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"inputList":["staff"]}'
Download the dataset in JSON, CSV, Excel or other formats available in the Console, or retrieve it through the Apify API. Use schedules, webhooks and Apify integrations to connect results to Google Sheets, Make, Zapier, cloud storage or your own application. These connections are configured separately by the user.
Reliability, retries, and public-data limits ⚠️
Collection uses pure HTTP with up to five concurrent requests. Invalid syntax and confirmed missing, removed or unavailable targets stop without unnecessary retries. Temporary network or proxy failures, timeouts, blocking responses, malformed data, throttling and server errors allow up to five total attempts per request.
Successful earlier pages remain saved if a later request fails. A normal end after saved results is not retried. An input with no accessible results can receive a failed row; that alone does not prove that its underlying source does not exist. An exhausted later request can add a failed row while preserving previous output.
Public blog follower counts were not present in the verified source and are not promised. A profile record is not a list of posts, followers or followed blogs. Optional dates and header values may be absent.
Tumblr controls public availability, ranking and optional fields. Result counts can be affected by duplicates, removed content and changes during a run. A page budget is a collection limit, not a promise of exhaustive coverage.
An invalid string within a valid input list does not stop other inputs. Invalid overall configuration, such as a non-string list item or a wrong page-count type, exits before source requests. Startup failures, unavailable dataset storage or an unrecoverable result-save error can still stop the whole run. A failed save is not retried as a new scraping request.
Frequently asked questions ❓
Does it include follower counts?
No follower-count coverage is promised. The Actor returns the public profile fields that Tumblr makes available.
Does one blog create multiple rows for its avatars?
No. All avatar variants and header details stay in that blog’s single row.
Does it require a Tumblr account or personal cookies?
No. You do not need to provide a Tumblr account, password or personal session cookie. Collection uses HTTP without opening a browser.
What happens to invalid or unavailable inputs?
Invalid individual inputs are recorded as failed without a source request. Confirmed missing or unavailable targets stop without unnecessary retries. Temporary failures allow up to five total attempts per request; other inputs and earlier saved results remain available.
Can I export results or run the same input again?
Yes. Export the default dataset or retrieve it through the Apify API. You can create an Apify schedule and connect completed runs to your own workflow.
Support, responsible use, and related actors 🛟
For a reproducible issue, use the Actor’s Issues tab and provide the run ID, approximate time, a safe public input, expected behavior and actual result. Include the mode or page budget when relevant. Never share access tokens, personal cookies or proxy credentials.
Use public data responsibly and follow applicable privacy, copyright, contractual and platform requirements before storing, analyzing or redistributing collected information.