# Lemon8 Scraper - Posts, Creators & Comments (`vulnv/lemon8-scraper`) Actor

Scrape Lemon8: keyword post search, full post details, post comments and creator profiles. Export likes, views, saves, comments, hashtags, images and creator data to JSON/CSV/Excel. No login, cookies or proxy needed.

- **URL**: https://apify.com/vulnv/lemon8-scraper.md
- **Developed by:** [VulnV](https://apify.com/vulnv) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 posts

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Lemon8 Scraper - Search Posts, Creators & Comments

**Scrape Lemon8 and export posts, creator profiles and comments to JSON, CSV or Excel.** Search posts by keyword, pull a single post's full details, collect a post's comments, or get a creator's profile - all from one Actor. Each result is one clean, flat row with views, likes, saves, comments, hashtags, images and creator data.

No login, no cookies and no proxies to configure - data is fetched through a fast, managed pipeline. Just pick an operation, add your input and press **Start**.

> **Unofficial notice:** This is an independent tool and is **not** affiliated with, endorsed by, or connected to Lemon8, ByteDance or their affiliates. "Lemon8" is a trademark of its respective owner, used here only to describe what the Actor scrapes.

### What is Lemon8?

Lemon8 is a lifestyle content app from ByteDance, the company behind TikTok. Creators share photo carousels, short videos and written tips about beauty, skincare, fashion, food, fitness, travel, home and wellness, and the app is popular in the United States, the United Kingdom and Southeast Asia. This scraper gives you programmatic access to Lemon8 search, posts, comments and creator profiles so you can track trends, discover creators and analyze engagement without a Lemon8 account.

### Operations

Pick one **Operation** and fill in the matching field:

| Operation | Input field | What you get |
|-----------|-------------|--------------|
| **Search posts by keyword** | `keywords` | Top posts matching each keyword, with views, likes, saves, hashtags and creator data. |
| **Post details** | `postUrls` | The full detail of each post (text, hashtags, images, category, language, region, all engagement counts, creator followers). |
| **Post comments** | `postUrls` | The comments on each post, including replies, with likes and commenter data. |
| **Creator profile** | `userUrls` | A creator's profile: followers, following, post count, total likes and saves, bio. |

`postUrls` accept full post URLs (`https://www.lemon8-app.com/@username/7596769672020754999`), short share links, or bare numeric **post IDs**. `userUrls` accept profile URLs (`https://www.lemon8-app.com/@username`), **usernames** (`username` or `@username`) or numeric **user IDs** - one per line.

### How to use it (step by step)

1. Choose an **Operation**.
2. Fill in the matching input:
   - Search posts -> add one or more **Search keywords** (topics, products, brands and hashtags all work).
   - Post details / Post comments -> paste **Post URLs / IDs**.
   - Creator profile -> paste **Creator URLs / usernames**.
3. Set **Maximum results per input** (default 100, or 0 for all available) for the paginated operations.
4. For search, optionally set **Sort order** (relevance, most popular, most recent) and **Content type** (all, videos only, photo and text posts only).
5. Press **Start**. Export the dataset as JSON, CSV, Excel, XML or via the API.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `operation` | string | **Required.** `search_posts`, `post_detail`, `post_comments`, or `user_profile`. |
| `keywords` | array | Search keywords (for `search_posts`). |
| `postUrls` | array | Post URLs, share links or post IDs (for `post_detail`, `post_comments`). |
| `userUrls` | array | Profile URLs, usernames or user IDs (for `user_profile`). |
| `maxItems` | integer | Max results per keyword / post. `0` = all available. Default `100`. |
| `searchSort` | string | `relevance`, `popular`, or `recent` (search only). |
| `contentType` | string | `all`, `video`, or `posts` (search only). |

### Output

Every row carries a `record_type` of `post`, `user` or `comment`. Common post fields:

| Field | Description |
|-------|-------------|
| `post_id`, `post_url`, `post_type` | Post identity, canonical URL and format (`Gallery` photo post or `Video`). |
| `title`, `content`, `hashtags` | Post title, plain-text body and tagged hashtags. |
| `view_count`, `like_count`, `comment_count`, `favorite_count`, `share_count` | Engagement metrics (`favorite_count` is saves). |
| `author_id`, `author_name`, `author_username`, `author_url`, `author_avatar_url` | Creator data. |
| `cover_url`, `image_urls`, `image_count`, `duration_seconds` | Cover, gallery images and video length. |
| `category`, `language`, `region`, `author_followers_count` | Extra detail filled on the **Post details** operation. |
| `create_time` | Publish time (ISO-8601 UTC). |

Creator (`user`) rows add `user_id`, `username`, `nickname`, `description` (bio), `followers_count`, `following_count`, `post_count`, `likes_total`, `favorites_total` and `profile_url`. Comment (`comment`) rows add `comment_id`, `text`, `like_count`, `reply_count`, `is_reply` and `reply_to_comment_id`.

Example post row:

```json
{
  "record_type": "post",
  "operation": "post_detail",
  "input": "7512315715774464543",
  "post_id": "7512315715774464543",
  "post_url": "https://www.lemon8-app.com/@tessapeay/7512315715774464543",
  "post_type": "Video",
  "content": "Trying the viral Korean rice mask for glass skin …",
  "hashtags": ["rice", "ricemask", "riceskincare", "homemadeskincare", "skincare"],
  "category": "beauty",
  "duration_seconds": 29,
  "create_time": "2025-06-05T04:59:06+00:00",
  "view_count": 305826,
  "like_count": 8639,
  "comment_count": 122,
  "favorite_count": 5687,
  "share_count": 37,
  "author_username": "tessapeay",
  "author_followers_count": 123944
}
```

### Common use cases

- **Trend tracking** - see which beauty, food, fashion or wellness posts are getting traction for any keyword.
- **Influencer discovery** - find creators in a niche from search results, then pull their profiles and follower counts.
- **Brand and product monitoring** - track posts and comments that mention your products or competitors.
- **Market and AI research** - build datasets of lifestyle content, hashtags and audience comments.

### Notes on reliability

- **Keyword search returns a limited set of top results.** Lemon8 only exposes its top-ranked posts for a keyword, and later pages increasingly repeat earlier ones. The Actor stops as soon as a page adds nothing new, so the number of unique posts per keyword is limited and varies by topic - it is not every post ever tagged with that keyword. Use several related keywords to widen coverage.
- The sort order is applied by Lemon8 loosely; treat "Most recent" and "Most popular" as preferences rather than strict orderings.
- Search rows do not include `category`, `region` or the creator's follower count; run **Post details** on the posts you care about to get them.
- Image and video URLs are served by Lemon8's CDN, are signed and expire; download them promptly.
- Comments are returned together with their replies; use `is_reply` / `reply_to_comment_id` to rebuild threads.
- If a post or creator is private or deleted, that input is skipped and the run continues.

### FAQ

**Do I need a Lemon8 account, cookies or a proxy?** No. Just add your input and press Start.

**Can I paste a profile URL instead of a user ID?** Yes - `userUrls` accepts `lemon8-app.com/@username` URLs, bare usernames and numeric user IDs.

**Can I run several keywords or URLs at once?** Yes - add multiple lines. Cross-input duplicates are removed automatically.

**Can I try it for free?** Yes. Users on the free Apify plan can fetch up to 10 results in total to try the Actor. Upgrade to a paid Apify plan to run it without that limit.

**What export formats are supported?** JSON, CSV, Excel, XML and HTML, plus the Apify API and integrations such as Google Sheets, Zapier, Make and webhooks.

### Pricing

This Actor is **pay per result**: you are charged for each record it returns (posts, comments and creator profiles), plus standard Apify platform usage. Different record types have different prices; see the **Pricing** tab for current rates. You are never charged for inputs that return nothing.

### Related scrapers

- **[Xiaohongshu Scraper](https://apify.com/vulnv/xiaohongshu-scraper)** - 小红书 / RedNote notes, users and comments.
- **[Instagram Posts Scraper](https://apify.com/vulnv/instagram-posts-scraper)** - Instagram posts, captions and engagement.
- **[Threads Scraper](https://apify.com/vulnv/threads-scraper)** - Threads creators, profiles, posts and comments.

# Actor input Schema

## `operation` (type: `string`):

What to scrape. Each operation uses a different input field below:

• Search posts → Keywords
• Post details → Post URLs / IDs
• Post comments → Post URLs / IDs
• Creator profile → Creator URLs / usernames

## `keywords` (type: `array`):

For the "Search posts" operation. Add one or more keywords - topics, product names, brands and hashtags all work. Each keyword is searched independently and cross-keyword duplicates are removed. Lemon8 returns a limited set of top results per keyword.

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

For the "Post details" and "Post comments" operations. Paste full post URLs (e.g. https://www.lemon8-app.com/@addy.h.n/7596769672020754999), short share links, or bare numeric post IDs - one per line.

## `userUrls` (type: `array`):

For the "Creator profile" operation. Paste profile URLs (e.g. https://www.lemon8-app.com/@addy.h.n), usernames (addy.h.n or @addy.h.n) or numeric user IDs - one per line.

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

Upper bound on results per keyword / post (for the paginated operations: search and comments). Cost scales linearly. Set 0 to fetch all available.

## `searchSort` (type: `string`):

For "Search posts" only. How Lemon8 orders results. Lemon8 applies this loosely, so treat it as a preference rather than a strict order.

## `contentType` (type: `string`):

For "Search posts" only. Return all posts, only video posts, or only photo / text posts.

## Actor input object example

```json
{
  "operation": "search_posts",
  "keywords": [
    "skincare routine",
    "meal prep"
  ],
  "maxItems": 100,
  "searchSort": "relevance",
  "contentType": "all"
}
```

# Actor output Schema

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

All scraped Lemon8 results in the default dataset.

## `overview` (type: `string`):

Overview table of the scraped results.

# 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 = {
    "keywords": [
        "skincare routine",
        "meal prep"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("vulnv/lemon8-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 = { "keywords": [
        "skincare routine",
        "meal prep",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("vulnv/lemon8-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 '{
  "keywords": [
    "skincare routine",
    "meal prep"
  ]
}' |
apify call vulnv/lemon8-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,vulnv/lemon8-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/HpfbEwqT28F0k78IS/builds/B9cwct8P6KazVncO0/openapi.json
