Lemon8 Feed Scraper: Posts, Comments, Analytics & Media avatar

Lemon8 Feed Scraper: Posts, Comments, Analytics & Media

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Lemon8 Feed Scraper: Posts, Comments, Analytics & Media

Lemon8 Feed Scraper: Posts, Comments, Analytics & Media

Scrape Lemon8 feeds across 22 categories and 10+ regions. Extract posts, images, videos, comments, engagement metrics, and post analytics with support for infinite scrolling and high-quality media downloads. Ideal for content monitoring, research, and trend analysis.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

0

Monthly active users

7 hours ago

Last modified

Share

Lemon8 Feeds Scraper: Posts, Media, Comments and Analytics by Category

Lemon8 Feeds Scraper turns Lemon8 category feeds into structured data. Pick from 37 feed categories across 10 regions, or paste feed links directly, and get post titles, full text, hashtags, engagement counts, images or video, and comment threads with their replies. Turn on Incremental mode for recurring runs that return only new and changed posts, download images and videos straight into the key-value store, or export a summary of each post to the apps you already use.

Why This Scraper?

  • 37 feed categories, 10 regions. For You, Outfits, Skincare, Recipes, Fitness, Travel and 31 more, each available for the US, Australia, Japan and 7 other regions.
  • Two ways in. Pick a category and region, or paste one or more Lemon8 feed URLs and let the actor work out the category and region itself.
  • Full post data. Title, preview text, engagement counts, images and hashtags from the feed listing, with the complete post body, related topics and edit time available when full details are turned on.
  • Comment threads. Top-level comments plus their replies, expanded until the Comment Expansion Timeout (30 seconds per post by default, up to about 1000 comments per post).
  • Optional media downloads. Save a post's images and its video straight into the key-value store.
  • Automatic fallback. When Apify Proxy is enabled and it cannot reach Lemon8, the actor switches to a backup connection so a run keeps going instead of failing outright.
  • Built for schedules. Incremental mode returns only new and changed posts on recurring runs, and a refused run fails loudly instead of quietly returning an empty dataset.

Use Cases

  • Trend and content research: track what is trending inside a category, from Skincare to Outfits to Recipes, across 10 regions.
  • Creator discovery: collect author names, profile links and like counts to find creators worth reaching out to.
  • Community and sentiment analysis: pull full comment threads with replies to see how an audience reacts to a topic.
  • Competitive or brand monitoring: schedule the actor with Incremental mode to see only new and changed posts for a category over time.
  • Media archiving: save post images and videos into the key-value store alongside the text data.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
id"7412987407534162437"
author.name"Sample Creator"
author.profileUrl"https://www.lemon8-app.com/@sample_creator?region=us"
author.profileImageUrl"https://p16-lemon8-sign.byteimg.com/sample-avatar.jpg"
title"5 Skincare Steps I Swear By"
content"Here's my short daily routine that actually..."
postUrl"https://www.lemon8-app.com/@sample_creator/7412987407534162437?region=us"
statistics.likesCount"6437"
images[{ "src": "https://...jpg", "alt": "" }]
isVideofalse (also true for video posts)
category / categoryId"Skincare" / 2
details.fullContentfull plain-text post body (when Get Detailed Post Data is on)
details.hashtags["#skincare", "#glowup"]
details.editTime"7/30"
details.statistics{ "savedCount": "312", "likesCount": "6437", "commentsCount": "148" }
details.galleryImagesthe post's own full-resolution image list
details.relatedTopics["Skincare Routine", "Glass Skin"]
details.videoData{ "videoUrl": "...", "posterUrl": "...", "width": "720", "height": "1280" } (video posts only)
allComments[{ "author": "...", "content": "...", "time": "7/30", "likes": "12", "replies": [...] }]
commentStats.totalComments42
commentStats.totalReplies9
changeType"NEW" (Incremental mode only)
changedFields["statistics"] (Incremental mode only)
firstSeenAt / lastSeenAt"2026-07-30T03:00:00Z" (Incremental mode only)

The statistics block at the top of a record only ever carries a real likesCount; its savedCount and commentsCount stay "0" because those come from the feed listing, not the post page. The accurate saved and comment counts live in details.statistics, which is only populated when Get Detailed Post Data is on, along with allComments and commentStats. Video posts carry a details.videoData block instead of (or alongside) their gallery images.

How to Use

  1. Pick a Category (0 to 36) and Region, or paste one or more Lemon8 feed URLs into Start URLs. Start URLs win when both are set.
  2. Set Post Limit, and turn on Get Detailed Post Data for full text, hashtags and comment threads (with a Details Post Limit to cap how many posts go that deep).
  3. Optionally turn on Save Images or Save Videos to store post media in the key-value store.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Scrape a category feed:

{
"category": 2,
"region": "us",
"limit": 20,
"getDetails": true,
"detailsLimit": 10,
"proxy": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}

Paste feed links instead (Start URLs mode):

{
"startUrls": [
"https://www.lemon8-app.com/feed/skincare_category?region=jp",
"https://www.lemon8-app.com/feed/outfits?region=us"
],
"limit": 15,
"getDetails": false,
"proxy": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}

Download images and videos:

{
"category": 6,
"region": "us",
"limit": 10,
"getDetails": true,
"detailsLimit": 10,
"saveImages": true,
"saveVideos": true,
"proxy": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}

Recurring run, only new and changed posts:

{
"category": 0,
"region": "us",
"limit": 50,
"incrementalMode": true,
"emitExpired": true,
"stateKey": "foryou-us-daily",
"proxy": { "useApifyProxy": true, "apifyProxyCountry": "US" }
}

Categories and regions

IDNameIDName
0For You19Drinks
1Outfits20Dining
2Skincare21Home skills
3Nails22Bags
4Home23Reading
5Recipes24Photography
6Makeup25Movie
7Hair26Outdoors
8Fitness27Tech
9Accessories28Art & Design
10Perfume29Gardening
11Mental Health30Career
12Relationship31Games
13Wellness32Education
14Baking33Cars
15Music34Wedding
16Shoes35Maternity
17Travel36Pets
18Tattoo

Regions: us (United States), au (Australia), nz (New Zealand), jp (Japan), th (Thailand), id (Indonesia), vn (Vietnam), my (Malaysia), sg (Singapore), ca (Canada).

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/lemon8-feeds-scraper").call(run_input={
"category": 2, "region": "us", "limit": 20,
"proxy": {"useApifyProxy": True, "apifyProxyCountry": "US"},
})
for post in client.dataset(run["defaultDatasetId"]).iterate_items():
print(post["title"], post["statistics"]["likesCount"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/lemon8-feeds-scraper').call({
category: 2, region: 'us', limit: 20,
proxy: { useApifyProxy: true, apifyProxyCountry: 'US' },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

  • Resume (resumeFromRunId) reads the post IDs from a previous run or dataset so a follow-up run can continue a large pull. It is not for daily monitoring, and it cannot be combined with Incremental mode once that mode already has tracked posts for the same feed, the run fails fast with a message asking you to pick one.
  • Incremental mode (incrementalMode) is for scheduling this actor against the same category or Start URLs, region and Get Detailed Post Data setting. Each post is classified NEW, UPDATED (with changedFields), UNCHANGED, REAPPEARED or EXPIRED. UNCHANGED posts are suppressed and not billed unless emitUnchanged is on. EXPIRED rows are produced only once a run has scanned every tracked feed to its natural end, not when Post Limit capped it, a block cut it short, or Resume was used, and only with emitExpired on. REAPPEARED can only happen for a post that was previously tombstoned EXPIRED and is later seen again, so it needs a prior emitExpired run first; a fresh state key never produces it. stateKey names or shares the stored state; leaving it empty derives a key automatically from the scope, so differently configured runs never mix state. With Incremental mode off, output is exactly as before, with none of these fields added.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape, the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify > Settings > Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. If the picker is empty, you haven't authorized a connector yet.
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
categoryinteger0Feed category, 0 to 36. Required unless Start URLs is set, in which case it is ignored.
startUrlsarray[]Lemon8 feed URLs to scrape, for example https://www.lemon8-app.com/feed/outfits?region=us. Wins over Category and Region when set.
regionstringusRegion code for category mode.
limitinteger2Maximum posts to extract per feed, up to 5000.
getDetailsbooleantrueNavigate to each post's page for full content and comment threads.
detailsLimitinteger2Maximum posts to fetch full details and comments for, up to 3000.
commentExpansionTimeoutinteger30Seconds to spend expanding comments on each post (10 to 300) before moving on.
resumeFromRunIdstringnoneReads the post IDs from a previous run or dataset to continue a large pull.
incrementalModebooleanfalseReturn only new, changed and reappeared posts on recurring runs against the same feed.
stateKeystringnoneName or share an incremental-mode state; auto-derived from the scope when left empty.
emitUnchangedbooleanfalseAlso return, and bill, UNCHANGED posts every run.
emitExpiredbooleanfalseAlso return, and bill, posts no longer found once a run fully scans every feed.
saveImagesbooleanfalseDownload every image on each returned post to the key-value store.
saveVideosbooleanfalseDownload the video and poster image of each video post that received full details (Get Detailed Post Data on, within Details Post Limit) to the key-value store.
proxyobjectnone (prefill: Apify Proxy, country US)Connection settings.
dev_transform_fieldsarray[]Advanced: keep only the listed fields (dot notation) in the output.
dev_dataset_namestringdefaultAdvanced: save results into a custom-named dataset. Supports {ACTOR}, {DATE}, {TIME} placeholders.
dev_dataset_clearbooleanfalseAdvanced: clear the target dataset before inserting new data.
mcpConnectorsarraynoneOptional: send a summary of each post to apps you authorized under Integrations.
notionParentPageUrlstringnoneNotion connector only: page under which post pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"id": "7412987407534162437",
"author": {
"name": "Sample Creator",
"followerCount": null,
"profileUrl": "https://www.lemon8-app.com/@sample_creator?region=us",
"profileImageUrl": "https://p16-lemon8-sign.byteimg.com/sample-avatar.jpg"
},
"title": "5 Skincare Steps I Swear By",
"content": "Here's my short daily routine that actually works for me...",
"postUrl": "https://www.lemon8-app.com/@sample_creator/7412987407534162437?region=us",
"statistics": {
"savedCount": "0",
"likesCount": "6437",
"commentsCount": "0"
},
"images": [
{ "src": "https://p16-lemon8-sign.byteimg.com/sample-image-1.jpg", "alt": "" }
],
"isVideo": false,
"category": "Skincare",
"categoryId": 2,
"details": {
"title": "5 Skincare Steps I Swear By",
"fullContent": "Here's my full daily skincare routine, step by step, with the products I use.",
"hashtags": ["#skincare", "#glowup"],
"editTime": "7/30",
"statistics": {
"savedCount": "312",
"likesCount": "6437",
"commentsCount": "148"
},
"galleryImages": [
{ "src": "https://p16-lemon8-sign.byteimg.com/sample-image-1.jpg", "alt": "" }
],
"relatedTopics": ["Skincare Routine", "Glass Skin"],
"isVideo": false,
"videoData": null
},
"allComments": [
{
"author": "Sample Fan",
"authorTag": null,
"content": "This actually worked for me too!",
"time": "7/30",
"likes": "12",
"replies": null
}
],
"commentStats": {
"totalComments": 42,
"totalReplies": 9,
"previewCommentCount": 0
}
}

Plan Requirement

The prefilled connection setting (Apify Proxy, country US) works out of the box. When Apify Proxy is enabled and it is unavailable or gets blocked, the actor automatically switches to a backup connection so a run keeps going without extra configuration. If you call the actor through the API, pass "proxy": {"useApifyProxy": true, "apifyProxyCountry": "US"} explicitly, because an omitted proxy field runs without one. For large or frequent runs, open the proxy field and pick a different country or your own connection for more headroom.

FAQ

How much does it cost?

You pay per post returned. Turning on Get Detailed Post Data or the media downloads adds processing time to a run but not a separate line item. The Pricing tab on the actor page shows the current rate. Use Post Limit and Details Post Limit to cap the cost of any run.

This actor collects only publicly available feed content. You are responsible for how you use it: follow Lemon8's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Even though the data is public, usernames, photos and video may be subject to third-party rights.

Can I get only new or changed posts on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared posts for the same category or Start URLs, region and Get Detailed Post Data setting. Unchanged posts are not billed unless you also turn on Emit unchanged.

What is the difference between Resume and Incremental mode?

Resume reads the post IDs from ONE specific interrupted run so a follow-up run can continue that large pull, it is for finishing a large pull, not for daily monitoring. Incremental mode is for scheduling the SAME feed again and again and getting only what changed; it remembers state itself, keyed by category or Start URLs, region and Get Detailed Post Data, or a State key you choose. Turning both on together against an incremental state that already has tracked posts fails fast with a message asking you to remove one.

Why did my run fail instead of returning an empty dataset?

If Lemon8 refuses every request for a feed, a blocked connection or a non-200 response after retries, the run stops with a clear message so "no posts today" is never confused with "nothing could be read", and nothing is charged. Try again in a few minutes, or open the proxy field and pick a different country. Start URLs that don't match a recognizable Lemon8 feed link also fail before any request is made, so you fix the input rather than retry a working feed forever.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the "Pipe results into your apps" field to push a summary of each post into Notion, Linear or Airtable.

πŸ”— Want more Lemon8 data?

Pair this actor with these related scrapers from the same team:

πŸ“± Lemon8 Profile Scraper
Scrape Lemon8 user profiles with automated multi-profile discovery. Extract profile data...
πŸ“± Lemon8 Search Scraper
Scrape Lemon8 posts by keyword across multiple regions. Extract posts, images, videos...
πŸ“± Lemon8 Media Scraper
Lightweight Lemon8 scraper for extracting image and video URLs from posts, with optional...
πŸ‘— Myer Scraper
Scrape Myer (myer.com.au) department-store products: name, brand, price, was-price...
🏷️ Tutti.ch
Scrape listings from tutti.ch across all 23 categories, including vehicles, property...
πŸ‘— KLEKT Sneaker & Apparel Resale Scraper
Scrape sneaker and streetwear listings from KLEKT (klekt.com). Browse the catalog with...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • πŸ› οΈ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.