# Lemon8 Scraper (`maximedupre/lemon8`) Actor

Collect public Lemon8 posts, creator profiles, and follower or following profiles. Choose one surface per run and save post text, authors, engagement, media links, and source details in an Apify dataset. Leave the item limit empty to collect all available results until the source is exhausted.

- **URL**: https://apify.com/maximedupre/lemon8.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.25 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🍋 Find public Lemon8 posts and profiles

For social media researchers, marketers, and creator teams, Lemon8 Scraper collects public Lemon8 posts, creator profiles, and follower or following profiles. It saves post text, authors, engagement counts, media links, profile details, and source context in a structured Apify dataset, so you can review Lemon8 data in one place.

- Check access questions with **[Lemon8 APK](https://apify.com/maximedupre/lemon8/examples/lemon8-apk)** before you choose a source.
- Read **[Download Lemon8 for PC](https://apify.com/maximedupre/lemon8/examples/download-lemon8-for-pc)** guidance when you need computer access.
- Review **[Lemon8 App Available Countries](https://apify.com/maximedupre/lemon8/examples/lemon8-app-available-countries)** when comparing regional access.
- Find **[How to Login to Lemon8 Without TikTok](https://apify.com/maximedupre/lemon8/examples/how-to-login-to-lemon8-without-tiktok)** guidance for account access.
- Check **[Lemon8 App Banned](https://apify.com/maximedupre/lemon8/examples/lemon8-app-banned)** information when access is limited.

#### 📦 Lemon8 rows in your dataset

Each row is a public result from the retrieval surface you choose. The dataset has three row types:

- `post` rows with post identity, text, author data, engagement, media links, hashtags, optional details, and source context.
- `creatorProfile` rows with public profile details, links, images, counts, and source context.
- `profileRelationship` rows with a public profile, its follower or following relationship, the source profile, and source context.

Optional values stay absent when Lemon8 does not expose them. Media is returned as direct source URLs.

#### ▶️ Choose one Lemon8 collection surface

Set **Target** to one surface for each run: keyword discovery, category feed, creator profiles, creator posts, individual post details, followers, or following. Only inputs for the selected surface are read. Use a separate run for each keyword or surface you need.

The Actor saves the first eligible occurrence of each source item as it finds it. If the same source item appears again from another keyword, URL, handle, ID, or similar submitted value, later matches are ignored. The saved row describes only the first match.

Use public Lemon8 pages only. Private or login-only pages are outside this Actor's scope. Set **Maximum items** when you want a smaller run. Leave it empty to return all available results until the source is exhausted. Maximum items only stops collection. It does not filter by date or engagement.

Turn on **Add post details and comments** when you need slower post details plus comments and replies for keyword discovery, category feeds, creator posts, or individual post details. Leave it off when you do not need those fields.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `target` | string | Chooses one retrieval surface: `keyword`, `category`, `creator_profiles`, `creator_posts`, `post_details`, `followers`, or `following`. |
| `keyword` | string | One keyword for public Lemon8 post discovery. Use a separate run for another keyword. |
| `category` | string | One supported Lemon8 category, such as `For You`, for a public category feed. |
| `postUrls` | array of objects | Public post URL entries for the `post_details` target. |
| `postUrls[].url` | string | One public Lemon8 post URL. |
| `creatorProfiles` | array of strings | Public creator handles or profile URLs for `creator_profiles` or `creator_posts`. Use one kind of identifier in a run. |
| `creatorProfiles[]` | string | One public creator handle or profile URL. |
| `sourceProfiles` | array of strings | Public creator handles or profile URLs used as sources for `followers` or `following`. |
| `sourceProfiles[]` | string | One public source profile handle or profile URL. |
| `region` | string | Optional supported Lemon8 region for the selected surface. Leave it empty to use the source's default region. |
| `maxItems` | integer | Optional work limit. Stops after this many records. Leave it empty to return all available results until the source is exhausted. It does not filter by date or engagement. |
| `includePostEnrichment` | boolean | For keyword discovery, category feed, creator posts, or individual post details, requests slower post details with comments and replies. Extra fields appear when the source provides them. |

**Example input**

This public input came from a successful run using the default input values:

```json
{
  "target": "keyword",
  "keyword": "travel",
  "maxItems": 20,
  "includePostEnrichment": false
}
```

#### 🧾 Output

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `dataset` | string | Link to the successful Lemon8 results saved from this run. |

Each dataset row follows one of the three shapes below. Fields can be absent when the selected Lemon8 source does not provide them.

**Post rows**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | Always `post` for a post row. |
| `postId` | string | Stable Lemon8 post ID. |
| `postUrl` | string | Direct link to the Lemon8 post. |
| `title` | string | Title shown on the post. |
| `caption` | string | Text or caption published with the post. |
| `author` | object | Public details for the post author. |
| `author.id` | string | Stable author ID. |
| `author.handle` | string | Public author handle. |
| `author.name` | string | Public author display name. |
| `author.profileUrl` | string | Direct link to the author's public profile. |
| `author.avatarUrl` | string | Direct link to the author's avatar image. |
| `author.followerCount` | integer | Author follower count shown by the source. |
| `author.followingCount` | integer | Number of accounts followed by the author when shown. |
| `engagement` | object | Engagement counts shown for the post. |
| `engagement.likeCount` | integer | Post like count. |
| `engagement.saveCount` | integer | Post save count. |
| `engagement.commentCount` | integer | Post comment count. |
| `media` | object | Direct source links for post media. |
| `media.mediaType` | string | Media kind: `image`, `video`, or `mixed`. |
| `media.imageUrls` | array of strings | Direct image URLs in source order. |
| `media.videoUrls` | array of strings | Direct video URLs in source order. |
| `hashtags` | array of strings | Hashtags attached to the post. |
| `relatedTopics` | array of strings | Related topics shown by the source. |
| `edit` | object | Edit details shown by the source. |
| `edit.isEdited` | boolean | Whether the source marks the post as edited. |
| `edit.editedAt` | date-time string | Time when the source says the post was edited. |
| `comments` | array of objects | Comments and replies from optional post enrichment. |
| `comments[].commentId` | string | Stable comment or reply ID. |
| `comments[].author` | object | Public author details for the comment or reply. |
| `comments[].author.id` | string | Stable comment author ID. |
| `comments[].author.handle` | string | Public comment author handle. |
| `comments[].author.name` | string | Public comment author display name. |
| `comments[].author.profileUrl` | string | Direct link to the comment author's public profile. |
| `comments[].author.avatarUrl` | string | Direct link to the comment author's avatar image. |
| `comments[].text` | string | Text of the comment or reply. |
| `comments[].createdAt` | date-time string | Time when the comment or reply was published. |
| `comments[].likeCount` | integer | Like count shown for the comment or reply. |
| `comments[].parentCommentId` | string | ID of the comment that this reply belongs to. |
| `source` | object | Retrieval surface and submitted value that led to the row. |
| `source.retrievalSurface` | string | Surface used to find the row. |
| `source.keyword` | string | Keyword that caused the post row to be saved, when used. |
| `source.category` | string | Category feed that caused the post row to be saved, when used. |
| `source.region` | string | Lemon8 region used for the result, when selected. |
| `changeType` | string | Monitoring state when recurring monitoring is used: `new`, `updated`, `unchanged`, `reappeared`, or `expired`. |

**Example post row**

This complete row came from a successful individual post details run:

```json
{
  "recordType": "post",
  "postId": "7582911139047080465",
  "postUrl": "https://www.lemon8-app.com/@thetravelintern/7582911139047080465",
  "title": "Save this guide before heading to Hanoi, Vietnam!🇻🇳",
  "caption": "Heading to Hanoi for the first time? Here are some travel tips for you to keep in mind! ✈️ 1) Check the weather before you go Unlike most of Southeast Asia, Hanoi (and Vietnam in general), experiences distinct seasons, ranging from cool winters to humid summers. So make sure to check the forecast before your trip and pack accordingly! 🌦️🧥 2) Get around like a local The most common and convenient way to travel is by motorbike. Download ride-hailing apps like Grab to make getting around easier. It’s affordable, quick, and the best way to experience the city like a local 🛵💨 3) Don't panic when crossing the street! Hanoi’s traffic can look chaotic, but there’s a rhythm to it. Follow locals when crossing, walk at a steady pace, and keep an eye on oncoming bikes. Most drivers will slow down or weave around you, so just remain calm and go! 🚶‍♀️🚦 Follow @thetravelintern for more travel inspiration! #sgtravel #hanoiitinerary #hanoitravel #hanoi #vietnam",
  "author": {
    "id": "6664509095087030273",
    "handle": "thetravelintern",
    "name": "thetravelintern",
    "profileUrl": "https://www.lemon8-app.com/@thetravelintern",
    "avatarUrl": "https://p16-lemon8-cross-sign.tiktokcdn-us.com/user-avatar-alisg/326c4e92188a71abfa4c1110482dca93~tplv-sdweummd6v-shrinkf:120:0:q75.webp?lk3s=66c60501&source=feed_user&x-expires=1788458400&x-signature=LfC%2FAHuryKXwjqREyZW6bIhupUk%3D",
    "followerCount": 5565
  },
  "engagement": {
    "likeCount": 69,
    "saveCount": 86,
    "commentCount": 0
  },
  "media": {
    "mediaType": "image",
    "imageUrls": [
      "https://p16-lemon8-sg-sign.tiktokcdn-us.com/tos-alisg-v-a3e477-sg/oAEa7T6AivNiv6BIB0WpAbPAqY3OAXAZcliAl~tplv-sdweummd6v-wap-logo-v1:QHRoZXRyYXZlbGludGVybg==:1080:0.webp?lk3s=66c60501&source=wap_large_logo_image&x-expires=1790445600&x-signature=MAcH%2Fgs2OVlnfBD9ocrCpBPp6fw%3D",
      "https://p16-lemon8-sg-sign.tiktokcdn-us.com/tos-alisg-v-a3e477-sg/oAOWYAliav4bABZiAXqlnBI370TAEAvdP6iqp~tplv-sdweummd6v-wap-logo-v1:QHRoZXRyYXZlbGludGVybg==:1080:0.webp?lk3s=66c60501&source=wap_large_logo_image&x-expires=1790445600&x-signature=3%2BjFjUQ3dkBho2smByjNBIMSqL4%3D"
    ],
    "videoUrls": []
  },
  "hashtags": [
    "#hanoi",
    "#sgtravel",
    "#hanoiitinerary",
    "#hanoitravel",
    "#vietnam"
  ],
  "relatedTopics": [
    "best time to visit hanoi"
  ],
  "source": {
    "retrievalSurface": "post_details",
    "region": "sg"
  },
  "edit": {
    "isEdited": false,
    "editedAt": "2025-12-12T10:13:05.000Z"
  },
  "comments": []
}
```

**Creator profile rows**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | Always `creatorProfile` for a creator profile row. |
| `profile` | object | Public creator profile details. |
| `profile.id` | string | Stable creator profile ID. |
| `profile.handle` | string | Public creator handle. |
| `profile.name` | string | Public creator display name. |
| `profile.biography` | string | Biography shown on the creator profile. |
| `profile.profileUrl` | string | Direct link to the public creator profile. |
| `profile.avatarUrl` | string | Direct link to the profile avatar image. |
| `profile.coverImageUrl` | string | Direct link to the profile cover image. |
| `profile.links` | array of strings | Links shown on the creator profile. |
| `profile.postCount` | integer | Number of posts shown for the profile. |
| `profile.followerCount` | integer | Number of followers shown for the profile. |
| `profile.followingCount` | integer | Number of accounts followed by the profile when shown. |
| `source` | object | Retrieval surface and submitted value that led to the row. |
| `source.retrievalSurface` | string | Surface used to find the profile. |
| `source.keyword` | string | Keyword that led to the row, when relevant. |
| `source.category` | string | Category feed that led to the row, when relevant. |
| `source.region` | string | Lemon8 region used for the result, when selected. |
| `changeType` | string | Monitoring state when recurring monitoring is used: `new`, `updated`, `unchanged`, `reappeared`, or `expired`. |

**Example creator profile row**

This genuine row came from a successful creator profile run:

```json
{
  "recordType": "creatorProfile",
  "profile": {
    "id": "6664509095087030273",
    "handle": "thetravelintern",
    "name": "thetravelintern",
    "biography": "Travel inspo | guides | itineraries | hacks 🇸🇬✈️🌍",
    "profileUrl": "https://www.lemon8-app.com/@thetravelintern",
    "avatarUrl": "https://p16-lemon8-cross-sign.tiktokcdn-us.com/user-avatar-alisg/326c4e92188a71abfa4c1110482dca93~tplv-sdweummd6v-shrinkf:1200:0:q75.webp?lk3s=d32e6450&source=ui_avatar&x-expires=1788458400&x-signature=VNpaX%2FlpWFLU29WZvra28b56c98%3D",
    "links": [
      "https://www.instagram.com/thetravelintern/",
      "https://thetravelintern.com"
    ],
    "postCount": 74,
    "followerCount": 5565,
    "followingCount": 1
  },
  "source": {
    "retrievalSurface": "creator_profiles"
  }
}
```

**Profile relationship rows**

| Field | Type | What it does |
| --- | --- | --- |
| `recordType` | string | Always `profileRelationship` for a follower or following row. |
| `profile` | object | Public profile details for the listed account. |
| `profile.id` | string | Stable listed profile ID. |
| `profile.handle` | string | Public listed profile handle. |
| `profile.name` | string | Public listed profile display name. |
| `profile.biography` | string | Biography shown for the listed profile. |
| `profile.profileUrl` | string | Direct link to the listed public profile. |
| `profile.avatarUrl` | string | Direct link to the listed profile avatar. |
| `profile.coverImageUrl` | string | Direct link to the listed profile cover image. |
| `profile.links` | array of strings | Links shown on the listed profile. |
| `profile.postCount` | integer | Number of posts shown for the listed profile. |
| `profile.followerCount` | integer | Number of followers shown for the listed profile. |
| `profile.followingCount` | integer | Number of accounts followed by the listed profile when shown. |
| `relationship` | string | Relationship to the source profile: `follower` or `following`. |
| `sourceProfile` | object | Public profile used as the follower or following source. |
| `sourceProfile.id` | string | Stable source profile ID. |
| `sourceProfile.handle` | string | Public source profile handle. |
| `sourceProfile.name` | string | Public source profile display name. |
| `sourceProfile.profileUrl` | string | Direct link to the source profile. |
| `source` | object | Retrieval surface and submitted value that led to the row. |
| `source.retrievalSurface` | string | Surface used to find the relationship. |
| `source.keyword` | string | Keyword that led to the row, when relevant. |
| `source.category` | string | Category feed that led to the row, when relevant. |
| `source.region` | string | Lemon8 region used for the result, when selected. |
| `changeType` | string | Monitoring state when recurring monitoring is used: `new`, `updated`, `unchanged`, `reappeared`, or `expired`. |

**Example profile relationship row**

This genuine row came from a successful followers run:

```json
{
  "recordType": "profileRelationship",
  "profile": {
    "id": "7064457970561909762",
    "handle": "msbald_10ismyuser",
    "name": "🎵adiah",
    "biography": "",
    "profileUrl": "https://www.lemon8-app.com/@msbald_10ismyuser",
    "avatarUrl": "https://p19-lemon8-cross-sign.tiktokcdn-us.com/tos-alisg-i-0000/4e33379e42d2474999b05b263ade0dfb~tplv-sdweummd6v-shrinkf:1200:0:q75.webp?lk3s=d32e6450&source=ui_avatar&x-expires=1788458400&x-signature=rT08mvwV9iYf%2FvQKdE8I%2B82HniA%3D",
    "links": [],
    "followerCount": 0
  },
  "relationship": "follower",
  "sourceProfile": {
    "id": "6778452273708188673",
    "handle": "dailyvanity",
    "name": "Daily Vanity",
    "profileUrl": "https://www.lemon8-app.com/@dailyvanity"
  },
  "source": {
    "retrievalSurface": "followers",
    "region": "sg"
  }
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. The buyer-facing event is **Post**. One successfully retrieved post saved to your dataset creates one event. Check the pricing panel for the current tier price.

#### 🔌 Integrations

Open the dataset link after a run, or use the Apify API to read the same rows. Media stays at Lemon8 and is returned through direct source URLs.

For a walkthrough, watch this video:

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I search more than one keyword in one run?

No. Choose the keyword target and enter one keyword. Start another run for another keyword.

##### Can I mix post URLs with creator profiles?

No. Choose one target for a run. Only the fields used by that target are read, so use separate runs for post URLs and creator profiles.

##### How do I get comments and replies?

Turn on **Add post details and comments** for keyword discovery, category feed, creator posts, or individual post details. This path can take longer, and the extra fields appear when Lemon8 provides them.

##### Can I collect followers and following in one run?

No. Choose either **Followers** or **Following** as the target. Add the source profile handles or URLs in **Source profiles**.

##### Why is an optional field missing?

Lemon8 does not show every field for every post or profile. The Actor keeps source omissions instead of making up values.

##### What happens when the same post appears twice?

The first eligible match is saved as soon as it is found. A later match for the same source item is ignored, and the saved row keeps the first match.

##### What does leaving Maximum items empty do?

It returns all available results until the source is exhausted. Maximum items only stops collection. It does not filter by date or engagement.

##### Does the Actor access private Lemon8 pages?

No. It works with publicly reachable Lemon8 pages and does not use source-account setup to open private or login-only pages.

##### Does the Actor store media files?

No. It returns direct source URLs for available media. It does not archive or transform those files.

### 📝 Changelog

**0.0: Initial release**

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~lemon8/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [TikTok Search Scraper](https://apify.com/maximedupre/tiktok-search-results-scraper): Search public TikTok videos or creator profiles by keyword.
- [Influencer Scraper](https://apify.com/maximedupre/influencer-scraper): Build public creator profile lists across TikTok, Instagram, and YouTube.
- [Instagram User Search](https://apify.com/maximedupre/instagram-user-search-scraper): Find public Instagram accounts from keywords and profile data.
- [TikTok Creator Analytics](https://apify.com/maximedupre/tiktok-creator-analytics): Review public TikTok creator totals and recent post metrics.
- [Social Media Stats Checker](https://apify.com/maximedupre/social-media-stats-checker): Compare public profile stats across several social platforms.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose one Lemon8 retrieval surface for this run. Only inputs for that surface are read.

## `keyword` (type: `string`):

Enter one keyword to find public Lemon8 posts. Run another search in a separate run.

## `category` (type: `string`):

Enter one supported Lemon8 category, such as For You, to collect public posts from that feed.

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

Add one or more public Lemon8 post URLs. The Actor returns each post's full text and complete gallery media.

## `creatorProfiles` (type: `array`):

Add one or more public creator handles or profile URLs. Use this list with Creator profiles or Creator posts. Use one kind of identifier in a run.

## `sourceProfiles` (type: `array`):

Add one or more public creator handles or profile URLs. Followers uses each profile as the source of follower records. Following uses it as the source of following records.

## `region` (type: `string`):

Optional. Enter one supported Lemon8 region for this run. Leave it empty to use the source's default region.

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

Optional. Stop after this many records. Leave it empty to return all available results until the source is exhausted. This does not filter by date or engagement.

## `includePostEnrichment` (type: `boolean`):

For Keyword discovery, Category feed, Creator posts, or Individual post details, request slower detail data and comment and reply records. The extra fields are returned when the source provides them.

## Actor input object example

```json
{
  "target": "keyword",
  "keyword": "travel",
  "maxItems": 20,
  "includePostEnrichment": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open the successful Lemon8 results from this run.

# 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 = {
    "target": "keyword",
    "keyword": "travel",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/lemon8").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 = {
    "target": "keyword",
    "keyword": "travel",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/lemon8").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 '{
  "target": "keyword",
  "keyword": "travel",
  "maxItems": 20
}' |
apify call maximedupre/lemon8 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/lemon8"
        }
    }
}

```

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/Ufl08PoglKb3Q3zvi/builds/KDdgllBsoUaFRioEQ/openapi.json
