{
  "openapi": "3.0.1",
  "info": {
    "title": "Lemon8 Scraper: Profiles, Posts, Hashtags, Keywords, Comments",
    "description": "For influencer research, trend tracking and brand monitoring: Lemon8 profiles and posts with views, saves, likes, comments, hashtags and images, by profile, keyword, hashtag or 22 category feeds in 12 markets. Saves image and video copies. Monitoring flags new, changed and deleted posts. No login.",
    "version": "0.1",
    "x-build-id": "yNkdYSavwUbvKjEWD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~lemon8-scraper-all-in-one/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-lemon8-scraper-all-in-one",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/neverempty~lemon8-scraper-all-in-one/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-lemon8-scraper-all-in-one",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/neverempty~lemon8-scraper-all-in-one/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-lemon8-scraper-all-in-one",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "Lemon8 creators to read: profile links like https://www.lemon8-app.com/@lemon8_us, or just @username. Each gives one profile row (followers, likes and saves received, post count, bio, links) plus that creator's posts, newest first. Leave empty if you use other sources.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "Single Lemon8 posts to read in full: links like https://www.lemon8-app.com/@username/7499465815561994794. Each gives one post row with all counts, full text, hashtags, images and video link. Leave empty if you use other sources.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search terms as you would type them in the app, for example skincare routine or easy recipes. Each returns the posts Lemon8 lists for that keyword, then continues with the hashtag of the same name until Max posts per source. Leave empty to skip keyword search.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags with or without #, for example #mealprep, or a hashtag link like https://www.lemon8-app.com/topic/7171967866135248902. Each returns posts from that hashtag. Leave empty to skip hashtags.",
            "items": {
              "type": "string"
            }
          },
          "feedCategories": {
            "title": "Feed categories",
            "type": "array",
            "description": "Lemon8 category feeds, one per line: foryou, food, beauty, fashion, home, wellness, travel, fitness, parenting, relationship, tech, photography, money, pets, entertainment, career, art, reading, gaming, cars, outdoors, education. Leave empty to skip feeds.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "us",
              "uk",
              "ca",
              "au",
              "nz",
              "jp",
              "th",
              "id",
              "vn",
              "my",
              "sg",
              "ph"
            ],
            "type": "string",
            "description": "Lemon8 market to read. Keywords, hashtags and feeds return different posts in each market. United States if not set.",
            "default": "us"
          },
          "maxItems": {
            "title": "Max posts per source",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many posts to return for each profile, keyword, hashtag and category, counted separately. Post URLs always return their post. 0 returns only the profile rows of Profile URLs.",
            "default": 20
          },
          "includePostDetails": {
            "title": "Include post details",
            "type": "boolean",
            "description": "On: opens each listed post to add full text, publish date, views, saves, comment count, every image, hashtags, the video link and the creator's followers. Off: returns only what the list shows (title, text preview, likes, cover image), which is faster.",
            "default": true
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Adds the comments of every returned post as their own rows (text, likes, reply count, date, commenter display name, whether the creator wrote it). Off by default.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many comments to return for each post when Include comments is on, in the order Lemon8 shows them. From 1 to 500.",
            "default": 20
          },
          "expandKeywords": {
            "title": "Expand keywords",
            "type": "boolean",
            "description": "Lemon8's keyword pages list about 5 to 10 posts. On: a keyword then continues with the hashtag of the same name and with the searches Lemon8 suggests for it, until Max posts per source; those rows say so in the source column. Off: only the keyword page.",
            "default": true
          },
          "oldestPostDate": {
            "title": "Posts published after",
            "type": "string",
            "description": "Return only posts published on or after this date. Use 2026-01-31, or a relative value like 30 days. Empty means no lower limit."
          },
          "newestPostDate": {
            "title": "Posts published before",
            "type": "string",
            "description": "Return only posts published on or before this date (2026-01-31 includes that whole day, UTC). Empty means no upper limit."
          },
          "monitoringMode": {
            "title": "Monitoring mode (only what changed)",
            "type": "boolean",
            "description": "Run on a schedule and get only what changed for each profile, keyword, hashtag and category: new posts (NEW), posts whose likes, saves, comments or text changed (UPDATED), and deleted profile posts (EXPIRED). Unchanged posts are not returned or charged. The first run only remembers what is there now and is free; later runs with no change cost one check per source. Profile rows are not repeated in this mode.",
            "default": false
          },
          "changeFields": {
            "title": "Monitoring: what counts as an update",
            "type": "array",
            "description": "In monitoring mode, posts returned before come back marked UPDATED when one of these values changed since the last run. Views change on almost every run, so they are not selected by default. Leave empty to get only NEW and EXPIRED posts.",
            "items": {
              "type": "string",
              "enum": [
                "likes",
                "saves",
                "comments",
                "views",
                "text"
              ],
              "enumTitles": [
                "Likes",
                "Saves",
                "Comments",
                "Views",
                "Title or text"
              ]
            },
            "default": [
              "likes",
              "saves",
              "comments",
              "text"
            ]
          },
          "returnExpired": {
            "title": "Monitoring: return deleted posts (EXPIRED)",
            "type": "boolean",
            "description": "In monitoring mode, a profile post that was there last run and is now gone from the profile and its own page is returned once, marked EXPIRED, with the values remembered from before. Off means deleted posts are not reported.",
            "default": true
          },
          "monitorName": {
            "title": "Monitoring: monitor name",
            "type": "string",
            "description": "Optional. A name for this monitor, like brand-a-weekly. Each saved Task already keeps its own memory; give a name when you start monitoring runs without a Task (API, schedules on the Actor), so two monitors of the same profile or hashtag do not share what they remember. Empty: the Task keeps its own memory, and runs without a Task share one."
          },
          "resetMonitoringState": {
            "title": "Reset monitoring memory",
            "type": "boolean",
            "description": "Forget what this monitor remembered (this Task, or this monitor name), so its next run starts over. Other monitors keep their memory. Use once, then turn off.",
            "default": false
          },
          "useProxy": {
            "title": "Retry through Apify Proxy",
            "type": "boolean",
            "description": "If Lemon8 does not answer, retry through Apify's datacenter proxy, and look up hashtag names through a residential connection. Off means direct connection only.",
            "default": true
          },
          "resumeFromDataset": {
            "title": "Continue from an earlier run",
            "type": "string",
            "description": "Optional. Pick the dataset of an earlier run of this Actor, or paste its dataset ID (the part after /datasets/ in the dataset link). Posts, comments and profiles already in it are skipped: not returned and not charged, and the run keeps going to the next ones. If the dataset cannot be read, the run stops at once with a free row and charges nothing. Empty means start fresh."
          },
          "saveImages": {
            "title": "Save images",
            "type": "boolean",
            "description": "Download each returned post's images into the media store below and add their links in savedImageUrls (same order as imageUrls). A file that cannot be saved is null and mediaNote says why; the post row is still returned. Off by default.",
            "default": false
          },
          "saveVideos": {
            "title": "Save videos",
            "type": "boolean",
            "description": "Download the video of each returned video post into the media store below and add its link in savedVideoUrl. Needs post details on. Videos over 30 MB are not saved. Off by default.",
            "default": false
          },
          "maxImagesPerPost": {
            "title": "Max images saved per post",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many images of each post to save, in the order Lemon8 shows them. From 1 to 50.",
            "default": 20
          },
          "maxMediaMbytes": {
            "title": "Max media MB per run",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop saving images and videos once this many megabytes were saved in this run. Rows keep coming; later files are null with a note. From 1 to 10000.",
            "default": 500
          },
          "mediaStoreName": {
            "title": "Media store name",
            "type": "string",
            "description": "Name of the key-value store in your Apify account that keeps the saved images and videos. It is created on first use and kept until you delete it, so the links in the rows keep working. 3 to 63 letters, digits and hyphens. Empty means lemon8-media.",
            "default": "lemon8-media"
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}