# Tumblr Post Scraper

> Tumblr Post Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes and returns structured post data from public Tumblr blogs, tags, and search timelines with filtering by type, date, and note count.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/tumblr?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tumblr-post-scraper-8f3ce172
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_OzJM-JPhxvxSS-DOC8aII

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tumblr-post-scraper-8f3ce172 -d '<json body>'
```

Example prompt: Pull up to 200 photo posts from the Tumblr blog 'staff.tumblr.com' that were published since 2024-01-01 and have at least 100 notes.

## When to prefer this

Use this endpoint when you need structured, filtered post data from public Tumblr blogs or tag timelines — especially when you need to filter by post type, date range, or minimum note count. It is better than raw web scraping when you want clean JSON output without parsing HTML. Prefer this over general web scrapers when the target is specifically Tumblr content.

## Known failure modes

- Private or deleted blog returns empty items array
- Invalid or nonexistent tag returns zero posts
- Malformed date format causes validation error
- Exceeding maxItems limit of 1000 causes parameter rejection
- Tumblr rate limiting or blocking may yield partial results
- Empty result set is not charged per pay-per-call model

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of items retrieved, a 'product' label ('tumblr'), and an array of post objects each containing the post ID, slug, type, post URL, blog URL, blog name, blog title, and blog description.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "tag": {
   "type": "string",
   "description": "Include only posts with this exact tag, ignoring case. Blog tagged URLs set this filter for that blog."
  },
  "maxItems": {
   "type": "integer",
   "default": 50,
   "maximum": 1000,
   "minimum": 1,
   "description": "Stop after this many unique posts across all inputs."
  },
  "minNotes": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Include posts with at least this many public notes."
  },
  "postType": {
   "enum": [
    "any",
    "text",
    "photo",
    "video",
    "quote",
    "link",
    "audio"
   ],
   "type": "string",
   "default": "any",
   "description": "Include one post type. Ignored when postTypes is provided."
  },
  "postTypes": {
   "type": "array",
   "description": "Optional list of post types to include, such as photo and video. Overrides postType."
  },
  "sinceDate": {
   "type": "string",
   "description": "Include posts published on or after this UTC date in YYYY-MM-DD format."
  },
  "startUrls": {
   "type": "array",
   "description": "Public Tumblr blog, tagged, or search URLs. Blog subdomains and www.tumblr.com/blog-name URLs are supported."
  },
  "untilDate": {
   "type": "string",
   "description": "Include posts published on or before this UTC date in YYYY-MM-DD format."
  },
  "searchQuery": {
   "type": "string",
   "description": "Optional tag to collect from the public tagged timeline; can be combined with startUrls."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "slug": null,
    "type": null,
    "postId": null,
    "blogUrl": null,
    "postUrl": null,
    "blogName": null,
    "blogTitle": null,
    "blogDescription": null
   }
  ],
  "product": "tumblr"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tumblr-post-scraper-8f3ce172/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
