# Hive Blog Scraper (`crawlerbros/hive-blog-scraper`) Actor

Scrape posts, author feeds, profiles, and communities from the Hive blockchain blogging network (hive.blog). Browse trending/hot/new posts by tag or community, pull an author's blog/feed/comments, look up single or batch posts by URL, fetch profile info, and browse the community directory.

- **URL**: https://apify.com/crawlerbros/hive-blog-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Hive Blog Scraper

Scrape posts, author feeds, profiles, and communities from the [Hive](https://hive.blog) blockchain blogging network — the same public data that powers hive.blog, PeakD, and Ecency. Browse trending / hot / new posts by tag or community, pull a specific author's blog, feed, comments or replies, look up a single post or a batch of posts by URL, fetch author profile info, or browse the community directory. HTTP-only via the public `api.hive.blog` JSON-RPC API. No auth, no login, no cookies, no proxy.

### What this actor does

- **Eleven modes:** `posts`, `byAccount`, `byPost`, `byPosts`, `profile`, `communities`, `byCommunity`, `tags`, `postComments`, `followers`, `following`
- **Six post rankings:** trending, hot, new, muted, highest-payout posts, highest-payout comments
- **Six author-activity views:** blog, feed, own posts, comments, replies received, payout-sorted
- **Rich post metadata:** payout value, vote count, tags, images, community, comment count, reputation
- **Author profiles:** bio, avatar/cover images, follower/following counts, post count, reputation
- **Community directory:** subscriber counts, admins, pending posts, NSFW flag
- **Full comment threads:** fetch every reply to a post (`postComments` mode) with the same rich fields as top-level posts
- **Follower graph:** list an account's followers or who it follows (`followers` / `following` modes), including muted/ignored relationships
- **Filters:** minimum payout, minimum votes, keyword match, required tag, payout-window status
- **Empty fields are omitted** — every record only contains fields that actually have data

### Output fields

#### Posts (`recordType: "post"`)

| Field | Description |
|---|---|
| `postId` | `author/permlink` composite ID |
| `author`, `permlink` | Post identity |
| `title`, `body` | Post title and full markdown body |
| `bodyLength` | Character length of the body |
| `category` | Primary tag / community used for the post's main category |
| `community`, `communityTitle` | Community ID and display name, if posted in a community |
| `tags[]` | All tags from the post's metadata |
| `images[]` | Image URLs extracted from post metadata |
| `created`, `updated` | Timestamps |
| `depth` | 0 for a top-level post, >0 for a comment |
| `commentCount` | Number of direct replies |
| `reblogCount` | Number of times reblogged |
| `totalVotes` | Total vote count |
| `payoutValue` | Current/pending payout in USD-equivalent |
| `pendingPayoutValue`, `authorPayoutValue`, `curatorPayoutValue` | Raw payout strings (e.g. `10.780 HBD`) |
| `maxAcceptedPayout` | Author-set ceiling on total payout (e.g. `1000000.000 HBD`) |
| `percentHbd` | Percent of the payout taken in HBD vs. Hive Power (0-100) |
| `beneficiaries[]` | Declared payout beneficiaries (`account`, `percent`) |
| `isPaidOut` | Whether the 7-day payout window has closed |
| `payoutAt` | UTC time the payout window closes (only while still open) |
| `authorReputation` | Author's display reputation score |
| `authorTitle`, `authorRole` | Community-assigned author title/role, if any |
| `sourceApp` | App used to publish (e.g. `peakd/2026.7.5`) |
| `postUrl` | Canonical `https://hive.blog/...` URL |

#### Profiles (`recordType: "profile"`)

`accountName`, `reputation`, `postCount`, `created`, `lastActive`, `followerCount`, `followingCount`, `rank`, `displayName`, `about`, `location`, `website`, `coverImage`, `profileImage`, `profileUrl`

#### Communities (`recordType: "community"`)

`communityName`, `title`, `about`, `lang`, `admins[]`, `isNsfw`, `authorCount`, `pendingPostCount`, `subscriberCount`, `pendingPayoutSum`, `createdAt`, `communityUrl`

The single-community lookup (`mode=byCommunity`) additionally returns: `description`, `flagText` (posting/community rules), `typeId`, `team[]` (`{account, role, title}` per member — owner/admin/mod roster).

#### Tags (`recordType: "tag"`, `mode=tags`)

`tagName`, `commentCount`, `topPostCount`, `totalPayouts` (raw string, e.g. `"809.296 HBD"`), `tagUrl`

#### Comments (`recordType: "comment"`, `mode=postComments`)

Same fields as Posts above, plus `parentAuthor` and `parentPermlink` (the post/comment being replied to). The root post itself is excluded — use `mode=byPost` for that.

#### Follow relationships (`recordType: "follower"` / `"following"`, `mode=followers`/`following`)

`accountName`, `followType` (`blog` or `ignore`), `accountUrl`

Every record also includes `recordType` and `scrapedAt` (UTC ISO timestamp).

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `posts` | `posts` / `byAccount` / `byPost` / `byPosts` / `profile` / `communities` / `byCommunity` / `tags` / `postComments` / `followers` / `following` |
| `sortPosts` | string | `trending` | mode=posts: `trending` / `hot` / `created` / `muted` / `payout` / `payout_comments` |
| `tag` | string | – | mode=posts: tag or community ID (e.g. `hive-142159`); blank = site-wide feed. mode=byCommunity: the exact community ID to look up, required |
| `account` | string | – | mode=byAccount / profile: Hive username, with or without `@` |
| `sortAccount` | string | `blog` | mode=byAccount: `blog` / `feed` / `posts` / `comments` / `replies` / `payout` |
| `postUrl` | string | – | mode=byPost/postComments: full post URL or `author/permlink` shorthand |
| `postUrls` | array | – | mode=byPosts: list of post URLs / shorthands |
| `followType` | string | `blog` | mode=followers/following: `blog` (regular follows) or `ignore` (muted accounts) |
| `communityQuery` | string | – | mode=communities: free-text filter over titles/about |
| `communitySort` | string | `rank` | mode=communities: `rank` / `new` / `subs` |
| `minPayoutValue` | number | – | Drop posts with payout below this USD value |
| `minVotes` | integer | – | Drop posts with fewer total votes |
| `keyword` | string | – | Case-insensitive substring match on title/body |
| `requiredTag` | string | – | Drop posts missing this tag |
| `onlyActivePayout` | boolean | `false` | Exclude posts whose payout window already closed |
| `maxItems` | integer | `50` | Hard cap on emitted records (1–1000) |

#### Example: trending photography posts

```json
{
  "mode": "posts",
  "sortPosts": "trending",
  "tag": "photography",
  "minPayoutValue": 5,
  "maxItems": 25
}
```

#### Example: an author's blog

```json
{
  "mode": "byAccount",
  "account": "monochromes",
  "sortAccount": "blog",
  "maxItems": 20
}
```

#### Example: a single post by URL

```json
{
  "mode": "byPost",
  "postUrl": "https://hive.blog/@monochromes/monomad-august-5th-2026-make-sure-to-read-our-community-and-contest-rules-before-submitting-your-publications"
}
```

#### Example: community directory search

```json
{
  "mode": "communities",
  "communityQuery": "photography",
  "communitySort": "rank",
  "maxItems": 20
}
```

#### Example: single community lookup (rules, roster, subscriber count)

```json
{
  "mode": "byCommunity",
  "tag": "hive-142159"
}
```

#### Example: browse trending tags

```json
{
  "mode": "tags",
  "maxItems": 50
}
```

### Use cases

- **Content research** — track trending topics and top-performing posts across Hive
- **Author monitoring** — pull a specific writer's full post history or reply activity
- **Curation tools** — build custom feeds filtered by payout, votes, or tags
- **Community analytics** — track subscriber growth and activity across Hive communities
- **Content archiving** — snapshot posts by URL for backup or analysis

### FAQs

**Does this require a Hive account, API key, or login?**
No. All data comes from Hive's public `api.hive.blog` JSON-RPC API, which requires no authentication.

**What is `payoutValue`?**
Hive posts earn rewards from the network over a 7-day payout window, denominated in Hive Dollars (HBD) and Hive Power. `payoutValue` is the API's USD-equivalent estimate of the post's current/final payout.

**Can I fetch comments, not just top-level posts?**
Yes — comments are just posts with `depth > 0`. Use `sortAccount: comments` (mode=byAccount) to pull an author's comments, or `byPost`/`byPosts` with a comment's own URL.

**Why do some posts have no `payoutValue` or `tags`?**
Those fields are only included when the upstream API actually returns them. Very old posts, or posts missing standard JSON metadata, may not have every field.

**Is this actor global?**
Yes — Hive is a single global blockchain network; there are no regional variants. Posts, authors, and communities are all part of one worldwide dataset.

**Why do some profile `coverImage` / `profileImage` URLs return a broken image?**
Those URLs are exactly what the account owner set in their own Hive profile metadata — they can point to any external host (Google Photos, Facebook CDN, a personal site, etc.), and Hive's API returns them verbatim. Some users' links are private, expired, or removed on the hosting side; that is a data-quality property of the source account, not something this actor can control or fix. `website`, `about`, and other free-text profile fields carry the same caveat.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `sortPosts` (type: `string`):

Ranking used by Hive's ranked-posts feed.

## `tag` (type: `string`):

mode=posts: filter the posts feed to a tag (e.g. `photography`) or a community ID (e.g. `hive-142159`); leave blank for the site-wide feed. mode=byCommunity: the exact community ID to look up (e.g. `hive-142159`), required.

## `account` (type: `string`):

Hive account name, with or without leading `@` (e.g. `monochromes`).

## `followType` (type: `string`):

Relationship type to list: normal follows (`blog`) or muted/ignored accounts (`ignore`).

## `sortAccount` (type: `string`):

Which listing of the account's activity to fetch.

## `postUrl` (type: `string`):

Full Hive post URL, or `author/permlink` shorthand. E.g. `https://hive.blog/@author/permlink` or `author/permlink`.

## `postUrls` (type: `array`):

List of Hive post URLs or `author/permlink` shorthands to fetch.

## `communityQuery` (type: `string`):

Free-text filter over community titles/about text. Leave blank to browse all communities.

## `communitySort` (type: `string`):

Ordering for the communities directory.

## `minPayoutValue` (type: `number`):

Drop posts with a pending/total payout below this USD value (mode=posts/byAccount/byPost/byPosts).

## `minVotes` (type: `integer`):

Drop posts with fewer total votes than this.

## `keyword` (type: `string`):

Case-insensitive substring match against the post title and body.

## `requiredTag` (type: `string`):

Drop posts that don't include this tag in their tag list (e.g. `photography`).

## `onlyActivePayout` (type: `boolean`):

Exclude posts whose 7-day payout window has already closed (is\_paidout=true).

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "posts",
  "sortPosts": "trending",
  "tag": "hive",
  "account": "monochromes",
  "followType": "blog",
  "sortAccount": "blog",
  "postUrl": "",
  "postUrls": [],
  "communityQuery": "",
  "communitySort": "rank",
  "onlyActivePayout": false,
  "maxItems": 50
}
```

# Actor output Schema

## `items` (type: `string`):

Dataset containing all scraped Hive posts, profiles, and communities.

# 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 = {
    "mode": "posts",
    "sortPosts": "trending",
    "tag": "hive",
    "account": "monochromes",
    "followType": "blog",
    "sortAccount": "blog",
    "postUrl": "",
    "postUrls": [],
    "communityQuery": "",
    "communitySort": "rank",
    "onlyActivePayout": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/hive-blog-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 = {
    "mode": "posts",
    "sortPosts": "trending",
    "tag": "hive",
    "account": "monochromes",
    "followType": "blog",
    "sortAccount": "blog",
    "postUrl": "",
    "postUrls": [],
    "communityQuery": "",
    "communitySort": "rank",
    "onlyActivePayout": False,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/hive-blog-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 '{
  "mode": "posts",
  "sortPosts": "trending",
  "tag": "hive",
  "account": "monochromes",
  "followType": "blog",
  "sortAccount": "blog",
  "postUrl": "",
  "postUrls": [],
  "communityQuery": "",
  "communitySort": "rank",
  "onlyActivePayout": false,
  "maxItems": 50
}' |
apify call crawlerbros/hive-blog-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/hive-blog-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/cBtp8UkIEva136ANG/builds/3scdgytAuIfRIFDpn/openapi.json
