# Tumblr Keyword Search - Posts, Media & Engagement (`ryyos/tumblr-keyword-search-scraper`) Actor

\[$0.35/1000] Search Tumblr by any keyword or phrase and get every matching post back in full: complete text, every image/video at full resolution, like/reblog/reply counts, tags and the reblog chain - sorted by top or most recent, no login required.

- **URL**: https://apify.com/ryyos/tumblr-keyword-search-scraper.md
- **Developed by:** [Rio Dwi Saputra](https://apify.com/ryyos) (community)
- **Categories:** Social media, Developer tools, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.35 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Tumblr Keyword Search Scraper - Full Post Data, Media & Engagement

**Search Tumblr by any keyword or phrase and get every matching post back in full detail**: complete text, every image/video/GIF at its highest available resolution, like/reblog/reply counts, tags, and the full reblog chain, sorted by top or most recent. Runs on the [Apify platform](https://apify.com) with no Tumblr login or API key required, giving you instant API access, scheduling, and dataset export on top of the raw search. Try it directly against [Tumblr's search](https://www.tumblr.com/search/cats).

### Why use this Actor?

- **Keyword monitoring** - track every new Tumblr post mentioning a brand, product, fandom, or topic.
- **Trend & sentiment research** - pull a keyword's top or most recent posts with full engagement counts.
- **Media collection** - grab every image/video URL matching a search term, ready to download at full resolution.
- **Competitive/community research** - see what's being posted and how it's performing around any term, without needing a Tumblr account.

### How to use this Actor

1. Click **Try for free** (or **Start**) on this page.
2. Enter a **Search query** (any keyword or phrase).
3. Choose to sort by **Top** (most engagement) or **Most recent**, and set a max result count.
4. Run the Actor and open the **Output** tab - results are also available via API, and as JSON/CSV/Excel export.

To browse Tumblr's curated Trending/Explore/Staff Picks feeds or specific tags instead of a free-text search, use the companion [Tumblr Trending, Explore & Tag Scraper](https://apify.com/store) Actor - kept separate since browsing and keyword search are different workflows.

### Input

| Field | Description |
|---|---|
| `query` | Free-text keyword or phrase to search for (required). |
| `sortBy` | `top` (most engagement) or `recent` (default `top`). |
| `maxResults` | Maximum number of posts to return (default 100). |

See the **Input** tab for the full interactive form.

### Output

Every dataset item is one matching Tumblr post with full detail, for example:

```json
{
  "postId": "825065188753604608",
  "postUrl": "https://www.tumblr.com/aphractal2/825065188753604608/physical-manifestations-of-health-bar",
  "blogName": "aphractal2",
  "blogUrl": "https://www.tumblr.com/aphractal2",
  "postType": "image",
  "date": "2026-08-16 01:24:39 GMT",
  "timestamp": 1786843479,
  "summary": "physical manifestations of health bar?",
  "tags": ["art", "digital art", "procreate"],
  "noteCount": 64175,
  "likeCount": 48622,
  "reblogCount": 15272,
  "replyCount": 281,
  "media": [{ "type": "image", "url": "https://64.media.tumblr.com/.../s2048x3072/....png" }],
  "isReblog": false,
  "trail": [],
  "searchQuery": "art"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel from the Output tab or the API.

### Data table

| Field | Meaning |
|---|---|
| `postType` | image, video, audio, text, link, or a comma-joined combination for mixed posts |
| `media` | Every image/video/audio URL from the post, already resolved to the highest available resolution and directly downloadable |
| `likeCount` / `reblogCount` / `replyCount` / `noteCount` | Full engagement breakdown, not just a single "notes" total |
| `trail` | The reblog chain (each prior blog's added text/media), present when `isReblog` is true |
| `searchQuery` | The keyword/phrase this result matched |

### Pricing

This Actor uses the Apify **Pay per result** model at **$0.35 per 1,000 results** (see the Actor's pricing tab for the current rate) - priced below comparable social-media/keyword-search scrapers on Apify Store (typically $1-10 per 1,000 results) since it fetches plain HTML with no browser rendering.

### Tips

- Use `sortBy: "recent"` for monitoring new posts as they appear, and `"top"` for research on what performs best around a term.
- Results paginate automatically up to `maxResults` - raise it for a deeper search, lower it for a fast sample.
- Run this Actor on a schedule (Apify's built-in Scheduler) to monitor a keyword continuously.

### FAQ, limitations & support

- This Actor only reads pages Tumblr already serves to logged-out visitors - it does not use anyone's account, does not log in, and does not access private/friends-only blogs or password-protected blogs.
- The per-post `likeCount`/`reblogCount`/`replyCount` figures are Tumblr's own published counts. The individual list of *who* liked or reblogged (Tumblr's "Notes" panel) is only available to a logged-in viewer on Tumblr itself and is out of scope for this Actor; the reblog `trail` (added commentary from each reblog) is included where Tumblr includes it in the post itself.
- For scraping requests outside what this Actor covers, or a custom integration, use the Issues tab on this Actor's Apify Store page to get in touch.

# Actor input Schema

## `query` (type: `string`):

Free-text keyword or phrase to search for on Tumblr.

## `sortBy` (type: `string`):

Order search results by top (most engagement) or most recent.

## `maxResults` (type: `integer`):

Maximum number of posts to return for this search.

## Actor input object example

```json
{
  "sortBy": "top",
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `runInfo` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ryyos/tumblr-keyword-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("ryyos/tumblr-keyword-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call ryyos/tumblr-keyword-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ryyos/tumblr-keyword-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kHju7v5NOCkuPKgEF/builds/UfBMElQM9zrfsIEmu/openapi.json
