{
  "openapi": "3.0.1",
  "info": {
    "title": "Lemon8 Scraper - Posts, Creators & Hashtags",
    "description": "Scrape public Lemon8 posts from post URLs, creator profiles, keyword search, hashtags and category feeds: text, images, video, likes, saves, views, comments on request and creator followers. No login, no start fee; input from other Lemon8 scrapers works. US$ 2.50/1,000 posts.",
    "version": "0.1",
    "x-build-id": "nR1sqLyZKNzHy3vqe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~lemon8-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-lemon8-scraper",
        "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/scrapewise~lemon8-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-lemon8-scraper",
        "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/scrapewise~lemon8-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-lemon8-scraper",
        "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": {
          "urls": {
            "title": "Lemon8 URLs",
            "type": "array",
            "description": "Lemon8 links, one per line. A profile (https://www.lemon8-app.com/@lemon8_us or just @lemon8_us) returns the creator's posts, newest first, up to 'Max items'. A post link or bare post id (7618125167721710094) returns that one post. Hashtag (/topic/skincare or #skincare), keyword (/discover/skincare-routine) and category feed (/feed/fashion) links work too; ?region=jp inside a link overrides 'Region' for that link.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords to search on Lemon8, one per line, as you would type them in the app: skincare routine, easy recipes, summer outfits. Each keyword returns up to 'Max items' posts, in the market chosen in 'Region'. Rows are marked search:<keyword> in the source column.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags, one per line, with or without #: fitinspo, #skincare. Each returns up to 'Max items' posts from the hashtag's public feed, popular first and then most recent. If a name comes back HASHTAG_NOT_FOUND (free), paste the hashtag's /topic/<id> link in 'Lemon8 URLs' instead.",
            "items": {
              "type": "string"
            }
          },
          "feedCategories": {
            "title": "Category feeds",
            "type": "array",
            "description": "Lemon8 category feeds, one per line: foryou, fashion, beauty, food, wellness, travel, home, pets, relationship, tech, career, reading, fitness. Each category returns up to 'Max items' posts from that feed in the selected region.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "us",
              "uk",
              "ca",
              "au",
              "nz",
              "jp",
              "th",
              "id",
              "vn",
              "my",
              "sg",
              "ph"
            ],
            "type": "string",
            "description": "Lemon8 market used for keyword search, hashtags and category feeds: the same keyword returns different posts in the US and in Japan, and a Japanese keyword in the US market returns few or none. Default: United States. Post and profile links open from any region.",
            "default": "us"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum posts per profile, keyword, hashtag and category, counted separately for each one. Single post links are always returned. Each delivered post costs US$ 0.0025, so 30 (default) costs US$ 0.075 per source. Set it high (5,000) to read a creator's whole history.",
            "default": 30
          },
          "onlyNew": {
            "title": "Only new posts since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Remembers which posts of each profile, hashtag, keyword and category were already delivered (Key-Value Store 'lemon8-scraper-only-new' in your account) and skips them next time: skipped posts are free and do not count against 'Max items'. Profiles stop at the first page with a known post, so a quiet day costs nothing. Post links are always returned. Delete the store to start over. Default off.",
            "default": false
          },
          "includePostDetails": {
            "title": "Full post details",
            "type": "boolean",
            "description": "On (default): opens each post to add publish date, views, saves, comment count, full text, every image, the video link and the creator's followers. One extra light request per post, same price. Off: a faster list with title, cover, likes and creator only, useful when you need only post ids and links.",
            "default": true
          },
          "searchHashtagFallback": {
            "title": "Deepen keyword search with the matching hashtag",
            "type": "boolean",
            "description": "Lemon8's web search shows only 5 to 60 posts per keyword. On (default): a keyword that runs out continues with the hashtag of the same name ('easy recipes' -> #easyrecipes) and then with searches Lemon8 suggests ('workout' -> 'Workout outfits'), until 'Max items'. Those rows have source search-hashtag: or search-related:. Off: only the keyword's own search page.",
            "default": true
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Adds a 'comments' list to each post: text, likes, reply count, date and the commenter's display name, in the order Lemon8 shows them. No commenter id or profile is collected. Same price per post; comments are not charged separately, but the run takes longer (about one extra request per 2 comments). Default off."
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many comments to read per post when 'Include comments' is on, from 1 to 500. Empty = 20. Higher values make the run slower but do not change the price."
          },
          "resumeFromDataset": {
            "title": "Skip posts already in this dataset",
            "type": "string",
            "description": "Optional. Pick the dataset of an earlier run, or paste its ID. Posts already in it are skipped: not returned and not charged. Use it to continue a large pull that was interrupted, with the same input."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The Apify datacenter proxy (default) works for Lemon8 and is included in the price. Blocked requests are retried on a new IP, with residential proxy as a last resort. Change only to route through your own proxy.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}