Web Scraping Layers for AI & Automation

back to blog

How to scrape Lemon8 for lifestyle and beauty trend research

ParseBird·14 Oct 2026

Key Takeaways

What is Lemon8 and why does it matter for trend research? Lemon8 is a lifestyle content app from ByteDance (TikTok's parent company), built around photo carousels and short videos about beauty, fashion, food, wellness, and travel. Its posts are designed to be saved, which makes its save counts a strong early signal of purchase intent.

What data can you scrape from a Lemon8 post? Author name, follower count and bio, title and full text, hashtags, related topics, location, all gallery images, video URL, likes, saves, comment and view counts, and the full comment thread with replies.

Which Lemon8 regions can be scraped? Ten regions: United States, Australia, New Zealand, Japan, Thailand, Indonesia, Vietnam, Malaysia, Singapore, and Canada. Each region returns its own local search results.

How do I track a Lemon8 trend over time without paying for the same posts twice? Use incremental mode with a stateKey. Repeat runs then output only posts that are new or whose stats changed, and you are charged only for those posts.

Why Lemon8 is a useful trend signal for brands

Lemon8 (ByteDance lifestyle app) sits between Instagram's photo feed and Pinterest's search-and-save behavior. Beauty brands, DTC skincare companies, food and beverage marketers, and travel boards use it to see which products, routines, and destinations people are saving, often while a trend is still forming in markets like Japan, Thailand, and Indonesia.

The Lemon8 Search Scraper turns a keyword search into structured rows. One keyword like "skincare" in one region returns the search results first, then related posts, up to your limit.

Question a brand asksLemon8 field that answers it
What are people saving about our category?statistics.savedCount per post
Which hashtags travel with our product?details.hashtags, details.relatedTopics
Who are the mid-size creators in this niche?author.followerCount, author.bio
What do commenters ask or complain about?allComments with replies
Is the trend local or regional?region, details.location

Is Lemon8 data different from TikTok data? Yes. Lemon8 is photo-carousel first and search-driven, so the content skews toward how-to guides, product round-ups, and "what I bought" posts. TikTok skews toward entertainment video. For TikTok trend data, see the TikTok Top Ads guide.

How to scrape Lemon8 search results by keyword and region

The minimum input is a search term and a region. Turning on getDetails opens each post for its full text, hashtags, and comments.

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/lemon8-search-scraper").call(run_input={
    "searchTerm": "glass skin routine",
    "region": "us",
    "limit": 200,
    "getDetails": True,
    "commentExpansionTimeout": 30,
})
posts = client.dataset(run["defaultDatasetId"]).list_items().items

You can also paste Lemon8 discover or experience links into startUrls, for example a Japan coffee discover page. The keyword and region are read from each link, and links take priority over searchTerm.

InputRange or valuesPurpose
searchTermany keywordUsed when startUrls is empty
regionus, au, nz, jp, th, id, vn, my, sg, caLocal search results for that market
limit1 to 5,000Posts per keyword or link
getDetailstrue or falseFull text, hashtags, comments, images, video
detailsLimitnumber or emptyOpen details for only the first N posts
commentExpansionTimeout10 to 300 secondsTime spent expanding comments per post

How many Lemon8 posts can I get per keyword? Up to 5,000 per keyword or link. Search results come first, then related posts, and each row's source field says which one it came from.

What a Lemon8 post looks like as data

A trimmed, illustrative row with details turned on:

{
  "postType": "Gallery",
  "region": "us",
  "title": "My 5-step glass skin routine under $60",
  "author": { "name": "example.skin", "followerCount": 18400 },
  "statistics": { "likesCount": 2310, "savedCount": 4120, "commentsCount": 96 },
  "details": {
    "hashtags": ["glassskin", "kbeauty", "skincareroutine"],
    "relatedTopics": ["Korean skincare", "Budget beauty"]
  },
  "commentStats": { "totalComments": 96, "totalReplies": 41, "complete": true },
  "source": "search",
  "searchQuery": "glass skin routine"
}

Note that saves are higher than likes in this example. That pattern is common on Lemon8 for routines and product lists, and it is the main reason the save count is worth tracking separately.

Finding rising products with a save-to-like ratio

A simple way to spot posts that work as shopping references rather than just entertainment is to rank by saves relative to likes:

const ranked = posts
  .filter((p) => p.statistics?.likesCount >= 100)
  .map((p) => ({
    title: p.title,
    url: p.postUrl,
    saveRatio: p.statistics.savedCount / p.statistics.likesCount,
    hashtags: p.details?.hashtags ?? [],
  }))
  .sort((a, b) => b.saveRatio - a.saveRatio);

Then count the hashtags across the top 50 posts. The tags that appear most often among high-save posts are usually product names, ingredients, or routines that people are planning to buy.

Can I read the comments on Lemon8 posts? Yes. With getDetails on, the allComments array holds every comment with author, text, time, likes, and nested replies. commentStats.complete tells you whether the full thread was loaded within the timeout.

Monitoring a Lemon8 keyword with incremental mode

Trend research is a repeat job. Incremental mode keeps a named state between runs so each scheduled run returns only what changed:

{
  "searchTerm": "matcha latte",
  "region": "jp",
  "limit": 300,
  "incrementalMode": true,
  "stateKey": "matcha-jp-daily",
  "emitUnchanged": false
}

In this mode each row gains changeType, changedFields, firstSeenAt, and lastSeenAt. Schedule it daily with Apify schedules and you get a running log of new posts and engagement changes for a keyword, without paying again for posts that did not change.

The same monitoring pattern is covered more broadly in how to build competitor monitoring without code.

Lemon8 scraper pricing

The scraper charges per post saved: about $2.99 per 1,000 posts on Apify's free plan at the time of writing, lower on paid plans, plus a tiny per-run start fee. With incremental mode, unchanged posts are not saved and so are not charged. Check the Lemon8 Search Scraper page for current pricing.

FAQ

Do I need a Lemon8 account to scrape it? No. The scraper reads public search and post pages that load without signing in.

Is it legal to scrape Lemon8? The scraper collects publicly visible posts. Personal data such as creator names and comments is still covered by privacy laws like the GDPR, so store only what you need and check with your own counsel before commercial use.

Can I return only a few fields to keep the dataset small? Yes. dev_transform_fields takes a list of dot paths, such as id, author.name, and statistics.likesCount, and returns only those.

Can I export Lemon8 data to Google Sheets? Yes. Export the dataset as CSV or connect Apify to Google Sheets through an integration. The guide to structuring scraped data covers cleaning nested fields like statistics before export.

Browse the Social Media category for more social trend scrapers.