# Tumblr Post Scraper (x402)

> Tumblr Post Scraper (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, 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, or search queries, filtered by type, date, and note count.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/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-x402-b6debdb8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_9U-x_yENUJEHduuQGFycR

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-x402-b6debdb8 -d '<json body>'
```

Example prompt: Pull up to 100 photo posts from Tumblr tagged 'analog photography' posted since 2024-01-01 that have at least 50 notes — I want the post URLs and blog names.

## When to prefer this

Choose this endpoint when you need structured, filterable Tumblr post data at scale — especially when you want to combine blog-level scraping with tag filtering, date windowing, post-type selection, and minimum note thresholds in a single call. It is pay-per-call with no charge on empty results, making it cost-efficient for exploratory queries. Prefer it over general-purpose web scrapers when you specifically need Tumblr's post metadata (IDs, slugs, blog info) in a clean structured format without parsing raw HTML.

## Known failure modes

- Blog or URL is private or does not exist — empty result returned, no charge
- Tag or search query yields no public posts in the given date range — empty result, no charge
- Invalid date format for sinceDate/untilDate — request validation error
- maxItems exceeds 1000 — schema validation error
- Tumblr rate limiting or blocking causes incomplete results
- Network timeout on large collections

## 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 matched posts and an array of items, each containing the post ID, slug, post type, post URL, blog URL, blog name, blog title, and blog description. Only posts matching all filters are included; failed or empty runs are not charged.

## 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-x402-b6debdb8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
