# W Social Scraper - Profiles, Posts & Followers (`zen-studio/wsocial-scraper`) Actor

Extract W Social profiles, posts with like, repost and reply counts, followers, and media from wsocial.eu. Search users by keyword, scrape by handle, or collect the whole network. Export to JSON, CSV, or Excel.

- **URL**: https://apify.com/zen-studio/wsocial-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 profiles

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## W Social Scraper | Profiles, Posts & Followers from wsocial.eu (2026)

<blockquote style="border-left:4px solid #4C945E;background:#F0FDF4;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">One nested row per user, every field kept:</span> <span style="font-size:15px;color:#57534E">full profiles, posts with like / repost / reply / quote counts, resolved media, and the follower graph from W Social. The most complete W Social scraper on Apify.</span>
</blockquote>

![W Social users as structured JSON: full profile, posts with like, repost, reply and quote counts, follower graph, and resolved media URLs](https://iili.io/Cx8hIta.png)

#### Copy to your AI assistant

````

zen-studio/wsocial-scraper on Apify. Scrapes W Social (wsocial.eu) users: full profiles, posts with engagement counts, followers, and media. Call ApifyClient("TOKEN").actor("zen-studio/wsocial-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Provide at least one of profileUrls, searchTerms, or scrapeAllAccounts. Full spec: GET https://api.apify.com/v2/acts/zen-studio~wsocial-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

### Key Features

- **One row per user, fully nested**: profile, posts, followers, following, and engagement records collected into a single structured record.
- **Posts with real engagement counts**: like, repost, reply, quote, and bookmark counts plus resolved image and video links.
- **Complete by design**: posts are merged from two sources so nothing the platform exposes is left out, and every field is passed through untouched.
- **Flexible targeting**: scrape specific profiles, search users by keyword, or collect the whole network.

### How to Scrape W Social Data

Give the actor one or more profiles, a search term, or turn on whole-network collection. Each user becomes one result row.

#### Basic: scrape one or more profiles

```json
{
  "profileUrls": ["wsocial.eu", "matnil01.wsocial.eu"]
}
````

#### Search users by keyword

```json
{
  "searchTerms": ["news", "tech"],
  "maxResults": 50,
  "maxPostsPerProfile": 20
}
```

#### Profiles with the follower graph

```json
{
  "profileUrls": ["wsocial.eu"],
  "includeFollowers": true,
  "includeFollowing": true,
  "maxFollowers": 500,
  "maxFollowing": 500
}
```

Handles (`name.wsocial.eu`), full profile links, and user IDs are all accepted in `profileUrls`. Set any limit to `0` to collect everything.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `profileUrls` | array | *one mode required* | Profile links, handles, or user IDs. Each becomes a result row. |
| `searchTerms` | array | `[]` | Find users by name or keyword. Every match is scraped. |
| `scrapeAllAccounts` | boolean | `false` | Collect every public account on the network. |
| `includePosts` | boolean | `true` | Include each user's posts with engagement counts. |
| `maxPostsPerProfile` | integer | `0` | Maximum posts per user. `0` = all. |
| `includeFollowers` | boolean | `false` | Include the list of accounts following each user. |
| `includeFollowing` | boolean | `false` | Include the list of accounts each user follows. |
| `maxFollowers` | integer | `0` | Cap followers per user. `0` = all. |
| `maxFollowing` | integer | `0` | Cap following per user. `0` = all. |
| `includeEngagementRecords` | boolean | `false` | Include the user's own likes, reposts, lists, and blocks. |
| `downloadMedia` | boolean | `false` | Save image and video files to storage and link them on each post. |
| `includeConnectionProfiles` | boolean | `true` | Full profile per follower / following entry. Set `false` for handle, display name, and ID only (much smaller output on large audiences). |
| `includePostEmbeds` | boolean | `false` | Advanced. Also attach the raw, unprocessed embed structure to each post. The clean `media` / `links` / `externalLink` / `quotedPost` fields are always present. |
| `includeRawPostRecord` | boolean | `false` | Advanced. Also attach each post's raw underlying record. Clean text, timestamps, and counts are always present. |
| `maxResults` | integer | `0` | Maximum number of users to scrape. `0` = no limit. |

Provide at least one of `profileUrls`, `searchTerms`, or `scrapeAllAccounts`.

### What Data Can You Extract from W Social?

Every result is one user, with everything nested inside:

- **Profile**: handle, display name, description, avatar, banner, follower / following / post counts, account creation date, labels.
- **Posts**: text, creation time, languages, like / repost / reply / quote / bookmark counts, plus clean `links`, `hashtags`, `mentions`, `externalLink`, and `quotedPost` fields, and reply / repost context.
- **Media**: image and video links per post with thumbnail, alt text, and dimensions, optionally downloaded to storage.
- **Graph**: followers and following lists (each a full profile view).
- **Engagement records**: the user's own likes, reposts, lists, and blocks.

#### Output Example

```json
{
  "did": "did:plc:e3bwgswz6lniwjadqqfno3c4",
  "handle": "wsocial.eu",
  "displayName": "W Social",
  "description": "We believe in the need for a global, trusted social media platform owned, run, and hosted in Europe.",
  "avatar": "https://cdn.example/avatar/wsocial.jpg",
  "banner": "https://cdn.example/banner/wsocial.jpg",
  "followersCount": 1872,
  "followsCount": 113,
  "postsCount": 62,
  "createdAt": "2026-03-04T14:40:42.058Z",
  "indexedAt": "2026-03-10T09:43:19.849Z",
  "labels": [],
  "associated": {"lists": 3, "feedgens": 0, "starterPacks": 0, "labeler": false},
  "verification": {"verifiedStatus": "valid", "trustedVerifierStatus": "none"},
  "posts": [
    {
      "id": "3moiotljpns2y",
      "cid": "bafyreib7ntnp65zxmoginsvagsd6zdxeznxvyvfbxeavsqinkviwdkaokq",
      "text": "Today I am joining W. Launch details: wsocial.eu #WSocial",
      "createdAt": "2026-06-17T16:03:25.361Z",
      "indexedAt": "2026-06-17T16:03:34.365Z",
      "langs": ["en"],
      "likeCount": 112,
      "repostCount": 30,
      "replyCount": 13,
      "quoteCount": 6,
      "bookmarkCount": 2,
      "author": {"did": "did:plc:e3bwgswz6lniwjadqqfno3c4", "handle": "wsocial.eu", "displayName": "W Social", "avatar": "https://cdn.example/avatar/wsocial.jpg"},
      "media": [
        {"type": "image", "url": "https://cdn.example/feed/full.jpg", "thumb": "https://cdn.example/feed/thumb.jpg", "alt": "Launch banner", "width": 1200, "height": 800, "kvUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/media_ab12cd34.jpg"}
      ],
      "links": [{"url": "https://wsocial.eu", "text": "wsocial.eu", "start": 38, "end": 48}],
      "hashtags": [{"tag": "WSocial", "start": 49, "end": 57}],
      "mentions": [{"did": "did:plc:axqfxntrrgfanh4pguuhsknp", "start": 0, "end": 8}],
      "labels": [],
      "_source": "indexed"
    },
    {
      "id": "3molpg5kcx22z",
      "cid": "bafyreih7c3p7w2n5xqz6tjk4l8vd9m0aqfh2bewxn3rytl5sgkq8m4od2u",
      "text": "Thanks, and welcome to W! More on the roadmap here.",
      "createdAt": "2026-06-17T18:10:00.000Z",
      "langs": ["en"],
      "likeCount": 8, "repostCount": 0, "replyCount": 1, "quoteCount": 0, "bookmarkCount": 0,
      "replyTo": {
        "root": {"id": "3molnheuu222g", "cid": "bafyreifzncqbobfdyogsg4la442mhp3atfvrp6g4l3a4weayopgcsjj6ai"},
        "parent": {"id": "3molnheuu222g", "cid": "bafyreifzncqbobfdyogsg4la442mhp3atfvrp6g4l3a4weayopgcsjj6ai"}
      },
      "quotedPost": {"id": "3mijbjrew7c27", "cid": "bafyreietzacyu4v3voogw3ui6rygfqhlmejain3oqazgnwj576vmqig3tm", "author": "matnil01.wsocial.eu", "text": "The next 90 days are about direction.", "media": [{"type": "image", "url": "https://cdn.example/feed/quoted.jpg"}]},
      "externalLink": {"url": "https://europa.eu/digital", "title": "Europe's digital future", "description": "Policy overview and roadmap.", "thumb": "https://cdn.example/ext/thumb.jpg"},
      "media": [{"type": "video", "url": "https://cdn.example/feed/clip.m3u8", "thumb": "https://cdn.example/feed/clip-thumb.jpg", "width": 720, "height": 1280}],
      "links": [], "hashtags": [], "mentions": [],
      "_source": "indexed"
    }
    // ... more posts
  ],
  "followers": [
    {"did": "did:plc:axqfxntrrgfanh4pguuhsknp", "handle": "matnil01.wsocial.eu", "displayName": "Mathias", "description": "Building in public.", "avatar": "https://cdn.example/avatar/mathias.jpg", "createdAt": "2026-04-01T09:00:00.000Z", "indexedAt": "2026-04-02T09:00:00.000Z", "labels": [], "associated": {"lists": 0, "feedgens": 0, "starterPacks": 0, "labeler": false}}
    // ... more followers
  ],
  "following": [
    {"did": "did:plc:zk4f2m9q7w", "handle": "news.wsocial.eu", "displayName": "W News", "avatar": "https://cdn.example/avatar/news.jpg", "labels": []}
    // ... more following
  ],
  "engagementRecords": {
    "likes": [
      {"id": "3molm5ikwp423", "cid": "bafyreicssfvamvsbwbh3gemov46kvq3qy25wnfycpaegkadj5fmzynhzeq", "subject": {"id": "3mokjupgsk22l", "cid": "bafyreidn5x2k7q9w"}, "createdAt": "2026-06-17T15:00:00.000Z"}
      // ... more likes
    ],
    "reposts": [
      {"id": "3mol9qf2xa11p", "cid": "bafyreih2w8t6", "subject": {"id": "3mok7yd1ze99k", "cid": "bafyreif3p0m1"}, "createdAt": "2026-06-17T15:10:00.000Z"}
    ],
    "lists": [
      {"id": "3mok1ab2cd33e", "cid": "bafyreil0p9q8", "name": "Founders", "purpose": "curatelist", "description": "People building in Europe.", "createdAt": "2026-05-01T10:00:00.000Z"}
    ],
    "blocks": []
  },
  "_meta": {"sources": ["indexed"], "complete": true, "postsTruncated": false},
  "_input": "wsocial.eu"
}
```

`author`, `verification`, `kvUrl`, `replyTo`, `repostOf`, `quotedPost`, and `externalLink` appear only when relevant: `verification` on verified accounts, `kvUrl` when `downloadMedia` is on, `replyTo` / `quotedPost` / `externalLink` on replies, quotes, and link-card posts, and `repostOf` on reposts. `followers`, `following`, and `engagementRecords` appear only when their toggles are enabled.

Posts carry a `_source` flag and the row carries `_meta` so you can tell at a glance how complete each record is.

### Advanced Usage

Ready-made configurations for audience research, profile monitoring, media archiving, and full-network collection.

#### Archive a profile with all media files

```json
{
  "profileUrls": ["wsocial.eu"],
  "maxPostsPerProfile": 0,
  "downloadMedia": true
}
```

#### Map an account's full audience

```json
{
  "profileUrls": ["wsocial.eu"],
  "includePosts": false,
  "includeFollowers": true,
  "includeFollowing": true
}
```

#### Slim output for a large audience

```json
{
  "profileUrls": ["wsocial.eu"],
  "includeFollowers": true,
  "includeFollowing": true,
  "includeConnectionProfiles": false
}
```

Followers and following come back as handle, display name, and ID only. On accounts with large audiences this cuts the result size by roughly two thirds, since the connection lists are most of the data.

#### Collect the whole network

```json
{
  "scrapeAllAccounts": true,
  "maxPostsPerProfile": 10
}
```

#### Deep profile with engagement history

```json
{
  "profileUrls": ["wsocial.eu"],
  "includeEngagementRecords": true,
  "maxPostsPerProfile": 200
}
```

### Pricing: Pay Per Event (PPE)

You pay only for what you collect. Profiles and posts are the core product; connections and media downloads are optional and priced lower.

| Event | Per 1,000 |
|-------|-----------|
| Profile result | $2.99 |
| Post result | $2.99 |
| Follower / following entry | $0.99 |
| Media file downloaded | $1.99 |

### FAQ

**What is W Social (wsocial.eu)?**
W Social, also written wsocial or simply W, is a European microblogging network based in Brussels, built around verified human users, privacy, and free speech. Accounts use handles like `name.wsocial.eu`. This actor turns any W Social user into a structured record of their profile, posts, and connections.

**Do I need a W Social account or invite?**
No. W Social signup is invite-gated, but this actor reads publicly visible profiles and posts without any account, invite, or credentials. Provide a handle or profile link and run.

**How many users can I scrape?**
As many as you want. Target specific profiles, search by keyword, or turn on whole-network collection. Use `maxResults` and the per-profile caps to control volume and cost.

**Can I get posts with like and repost counts?**
Yes. Every post includes like, repost, reply, quote, and bookmark counts, alongside the post text, media, and reply or repost context.

**Can I download the images and videos?**
Yes. Turn on `downloadMedia` to save each image and video file to storage; the saved file link is added to its post. Leave it off to keep the direct media links only.

**Can I also get who a user follows?**
Yes. Turn on `includeFollowers` and `includeFollowing`. Each entry is a full profile, and you can cap the lists with `maxFollowers` and `maxFollowing` on large accounts.

**Can I make the output smaller?**
Yes. Every result is complete by default, but three switches slim it down when you don't need everything. Turn off `includeConnectionProfiles` to get followers and following as handle, display name, and ID only; this is the biggest saving, since on accounts with large audiences the connection lists are most of the data. Turn off `includePostEmbeds` to keep just the resolved `media` links on each post. Turn off `includeRawPostRecord` to keep only the top-level post text, timestamps, and counts. Mix and match whichever you need.

**How fresh is the data?**
Each run fetches live data at the moment it runs. Engagement counts, follower numbers, and new posts reflect the current state.

**How do I export the data?**
Download results as JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or pull them through the Apify API. JSON preserves the nested posts and followers best; flat formats expand nested fields into columns.

**Is it legal to scrape W Social data?**
This actor extracts only publicly available data, nothing behind a login. Profiles, posts, and reviewer names are personal data, so you are responsible for complying with W Social's terms and applicable data protection law, including the EU GDPR.

### Support

- **Bugs**: Issues tab
- **Features**: Issues tab

### Legal Compliance

Extracts publicly available data. Users must comply with W Social terms and data protection regulations (GDPR, CCPA).

***

*Scrape W Social profiles, posts, engagement counts, and followers into one structured record per user.*

# Actor input Schema

## `profileUrls` (type: `array`):

Profile links, handles, or user IDs (see the accepted formats above). Each one becomes a result row.

## `searchTerms` (type: `array`):

Find users by name or keyword. Every matching user is scraped.<br><br>Use <b>Max profiles</b> below to cap how many.

## `scrapeAllAccounts` (type: `boolean`):

Collect every public account on the network. Combine with <b>Max profiles</b> to control volume and cost.

## `maxResults` (type: `integer`):

Maximum number of users to scrape across all inputs. <b>0 = no limit.</b><br><br>This is the main cost cap on <b>Search terms</b> and <b>Scrape all accounts</b> runs.

## `includePosts` (type: `boolean`):

Include each user's posts with engagement counts (likes, reposts, replies, quotes).

## `maxPostsPerProfile` (type: `integer`):

Maximum posts to collect per user. <b>0 = all.</b>

## `includeFollowers` (type: `boolean`):

Include the list of accounts following each user. Each entry is a full profile.

## `includeFollowing` (type: `boolean`):

Include the list of accounts each user follows. Each entry is a full profile.

## `maxFollowers` (type: `integer`):

Cap followers collected per user. <b>0 = all.</b>

## `maxFollowing` (type: `integer`):

Cap following collected per user. <b>0 = all.</b>

## `includeEngagementRecords` (type: `boolean`):

Include each user's own likes, reposts, lists, and blocks (archival detail).

## `downloadMedia` (type: `boolean`):

Also save image and video files to storage and add their links to each post.<br><br>Leave off to keep the direct media links only.

## `includeConnectionProfiles` (type: `boolean`):

On: each follower and following entry is a complete profile.<br><br><b>Off: keep only handle, display name, and ID per entry</b>, which dramatically shrinks the output for accounts with large audiences.

## `includePostEmbeds` (type: `boolean`):

Posts always include clean <code>media</code>, <code>links</code>, <code>externalLink</code>, and <code>quotedPost</code> fields.<br><br>Turn this on to <b>also</b> attach the raw, unprocessed embed structure (advanced).

## `includeRawPostRecord` (type: `boolean`):

Post text, timestamps, languages, links, and engagement counts are always included as clean top-level fields.<br><br>Turn this on to <b>also</b> attach the raw underlying record (advanced).

## Actor input object example

```json
{
  "profileUrls": [
    "wsocial.eu"
  ],
  "scrapeAllAccounts": false,
  "maxResults": 0,
  "includePosts": true,
  "maxPostsPerProfile": 0,
  "includeFollowers": false,
  "includeFollowing": false,
  "maxFollowers": 0,
  "maxFollowing": 0,
  "includeEngagementRecords": false,
  "downloadMedia": false,
  "includeConnectionProfiles": true,
  "includePostEmbeds": false,
  "includeRawPostRecord": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset of user profiles, one row per user with an embedded posts array.

# 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 = {
    "profileUrls": [
        "wsocial.eu"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/wsocial-scraper").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 = { "profileUrls": ["wsocial.eu"] }

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/wsocial-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "wsocial.eu"
  ]
}' |
apify call zen-studio/wsocial-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zen-studio/wsocial-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "W Social Scraper - Profiles, Posts & Followers",
        "description": "Extract W Social profiles, posts with like, repost and reply counts, followers, and media from wsocial.eu. Search users by keyword, scrape by handle, or collect the whole network. Export to JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "lLrI99SgUWV9SjfXf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~wsocial-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-wsocial-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/zen-studio~wsocial-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-wsocial-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/zen-studio~wsocial-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-wsocial-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": {
                    "profileUrls": {
                        "title": "Profiles",
                        "type": "array",
                        "description": "Profile links, handles, or user IDs (see the accepted formats above). Each one becomes a result row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Find users by name or keyword. Every matching user is scraped.<br><br>Use <b>Max profiles</b> below to cap how many.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeAllAccounts": {
                        "title": "Scrape all accounts",
                        "type": "boolean",
                        "description": "Collect every public account on the network. Combine with <b>Max profiles</b> to control volume and cost.",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max profiles",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of users to scrape across all inputs. <b>0 = no limit.</b><br><br>This is the main cost cap on <b>Search terms</b> and <b>Scrape all accounts</b> runs.",
                        "default": 0
                    },
                    "includePosts": {
                        "title": "Include posts",
                        "type": "boolean",
                        "description": "Include each user's posts with engagement counts (likes, reposts, replies, quotes).",
                        "default": true
                    },
                    "maxPostsPerProfile": {
                        "title": "Max posts per profile",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum posts to collect per user. <b>0 = all.</b>",
                        "default": 0
                    },
                    "includeFollowers": {
                        "title": "Include followers",
                        "type": "boolean",
                        "description": "Include the list of accounts following each user. Each entry is a full profile.",
                        "default": false
                    },
                    "includeFollowing": {
                        "title": "Include following",
                        "type": "boolean",
                        "description": "Include the list of accounts each user follows. Each entry is a full profile.",
                        "default": false
                    },
                    "maxFollowers": {
                        "title": "Max followers per profile",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap followers collected per user. <b>0 = all.</b>",
                        "default": 0
                    },
                    "maxFollowing": {
                        "title": "Max following per profile",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap following collected per user. <b>0 = all.</b>",
                        "default": 0
                    },
                    "includeEngagementRecords": {
                        "title": "Include likes, reposts, lists & blocks",
                        "type": "boolean",
                        "description": "Include each user's own likes, reposts, lists, and blocks (archival detail).",
                        "default": false
                    },
                    "downloadMedia": {
                        "title": "Download media files",
                        "type": "boolean",
                        "description": "Also save image and video files to storage and add their links to each post.<br><br>Leave off to keep the direct media links only.",
                        "default": false
                    },
                    "includeConnectionProfiles": {
                        "title": "Full follower & following profiles",
                        "type": "boolean",
                        "description": "On: each follower and following entry is a complete profile.<br><br><b>Off: keep only handle, display name, and ID per entry</b>, which dramatically shrinks the output for accounts with large audiences.",
                        "default": true
                    },
                    "includePostEmbeds": {
                        "title": "Include raw embed data",
                        "type": "boolean",
                        "description": "Posts always include clean <code>media</code>, <code>links</code>, <code>externalLink</code>, and <code>quotedPost</code> fields.<br><br>Turn this on to <b>also</b> attach the raw, unprocessed embed structure (advanced).",
                        "default": false
                    },
                    "includeRawPostRecord": {
                        "title": "Include raw post record",
                        "type": "boolean",
                        "description": "Post text, timestamps, languages, links, and engagement counts are always included as clean top-level fields.<br><br>Turn this on to <b>also</b> attach the raw underlying record (advanced).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
