# TruthSocial.com Profile With Posts Scraper

A powerful Apify actor for scraping Truth Social profiles and posts. This scraper extracts comprehensive data including user information, posts, engagement metrics, and more, with powerful monitoring capabilities to track updates over time.

## Actor Statistics

- Total users: 8
- Monthly users: 7
- Runs succeeded: 100.00%
- Categories: Social media, Lead generation, Automation

## Pricing

$10.00/month + usage

## Input Schema

- **startUrls** (type: array): URLs to start with. The actor currently supports basic category URLs such as `https://www.truthsocial.com/realDonaldTrump/`.
- **maxItems** (type: integer): Maximum number of items that will be scraped.
- **monitoringMode** (type: boolean): If checked, it will only scrape newly posts compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.
- **maxConcurrency** (type: integer): Maximum number of pages that can be processed at the same time.
- **minConcurrency** (type: integer): Minimum number of pages that will be processed at the same time.
- **maxRequestRetries** (type: integer): Number of times the crawler will retry a failed request before giving up.
- **proxy** (type: object): Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## API example

## TruthSocial.com Profile With Posts Scraper

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

A powerful Apify actor for scraping Truth Social profiles and posts. This scraper extracts comprehensive data including user information, posts, engagement metrics, and more, with powerful monitoring capabilities to track updates over time.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/memo23~apify-truth-social-profile-scraper-with-posts/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls` (required)**

  `array` — URLs to start with. The actor currently supports basic category URLs such as \`https://www.truthsocial.com/realDonaldTrump/\`.

  **Items:**

  `string`

- **`maxConcurrency`**

  `integer`, default: `10` — Maximum number of pages that can be processed at the same time.

- **`maxItems`**

  `integer`, default: `1000` — Maximum number of items that will be scraped.

- **`maxRequestRetries`**

  `integer`, default: `100` — Number of times the crawler will retry a failed request before giving up.

- **`minConcurrency`**

  `integer`, default: `1` — Minimum number of pages that will be processed at the same time.

- **`monitoringMode`**

  `boolean`, default: `false` — If checked, it will only scrape newly posts compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.

- **`proxy`**

  `object`, default: `{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}` — Specifies proxy servers that will be used by the scraper in order to hide its origin.\<br>\<br>For details, see \<a href='https://apify.com/apify/web-scraper#proxy-configuration' target='\_blank' rel='noopener'>Proxy configuration\</a> in README.

**Example:**

```
{
  "startUrls": [
    ""
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/memo23~apify-truth-social-profile-scraper-with-posts/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls` (required)**

  `array` — URLs to start with. The actor currently supports basic category URLs such as \`https://www.truthsocial.com/realDonaldTrump/\`.

  **Items:**

  `string`

- **`maxConcurrency`**

  `integer`, default: `10` — Maximum number of pages that can be processed at the same time.

- **`maxItems`**

  `integer`, default: `1000` — Maximum number of items that will be scraped.

- **`maxRequestRetries`**

  `integer`, default: `100` — Number of times the crawler will retry a failed request before giving up.

- **`minConcurrency`**

  `integer`, default: `1` — Minimum number of pages that will be processed at the same time.

- **`monitoringMode`**

  `boolean`, default: `false` — If checked, it will only scrape newly posts compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.

- **`proxy`**

  `object`, default: `{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}` — Specifies proxy servers that will be used by the scraper in order to hide its origin.\<br>\<br>For details, see \<a href='https://apify.com/apify/web-scraper#proxy-configuration' target='\_blank' rel='noopener'>Proxy configuration\</a> in README.

**Example:**

```
{
  "startUrls": [
    ""
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/memo23~apify-truth-social-profile-scraper-with-posts/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`startUrls` (required)**

  `array` — URLs to start with. The actor currently supports basic category URLs such as \`https://www.truthsocial.com/realDonaldTrump/\`.

  **Items:**

  `string`

- **`maxConcurrency`**

  `integer`, default: `10` — Maximum number of pages that can be processed at the same time.

- **`maxItems`**

  `integer`, default: `1000` — Maximum number of items that will be scraped.

- **`maxRequestRetries`**

  `integer`, default: `100` — Number of times the crawler will retry a failed request before giving up.

- **`minConcurrency`**

  `integer`, default: `1` — Minimum number of pages that will be processed at the same time.

- **`monitoringMode`**

  `boolean`, default: `false` — If checked, it will only scrape newly posts compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.

- **`proxy`**

  `object`, default: `{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}` — Specifies proxy servers that will be used by the scraper in order to hide its origin.\<br>\<br>For details, see \<a href='https://apify.com/apify/web-scraper#proxy-configuration' target='\_blank' rel='noopener'>Proxy configuration\</a> in README.

**Example:**

```
{
  "startUrls": [
    ""
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`startUrls` (required)**

  `array` — URLs to start with. The actor currently supports basic category URLs such as \`https://www.truthsocial.com/realDonaldTrump/\`.

  **Items:**

  `string`

* **`maxConcurrency`**

  `integer`, default: `10` — Maximum number of pages that can be processed at the same time.

* **`maxItems`**

  `integer`, default: `1000` — Maximum number of items that will be scraped.

* **`maxRequestRetries`**

  `integer`, default: `100` — Number of times the crawler will retry a failed request before giving up.

* **`minConcurrency`**

  `integer`, default: `1` — Minimum number of pages that will be processed at the same time.

* **`monitoringMode`**

  `boolean`, default: `false` — If checked, it will only scrape newly posts compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.

* **`proxy`**

  `object`, default: `{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}` — Specifies proxy servers that will be used by the scraper in order to hide its origin.\<br>\<br>For details, see \<a href='https://apify.com/apify/web-scraper#proxy-configuration' target='\_blank' rel='noopener'>Proxy configuration\</a> in README.

**Example:**

```
{
  "startUrls": [
    ""
  ],
  "maxItems": 1000,
  "monitoringMode": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

## Apify Truth Social Profile Scraper

**Unlock the Full Power of Truth Social Data** - The only scraper you need to track, analyze, and understand Truth Social activity with enterprise-grade reliability and precision. Whether you're monitoring competitors, tracking trends, or conducting research, our scraper delivers comprehensive, real-time insights while saving you time and resources.

*"From real-time monitoring to deep historical analysis, we turn Truth Social's public data into your competitive advantage."*

### Overview

The Truth Social Scraper is your go-to tool for extracting data from Truth Social profiles. Ideal for monitoring updates, conducting sentiment analysis, and gathering research data, it tracks engagement metrics like followers and statuses. With easy setup and multiple export formats (JSON, CSV), it's perfect for researchers, analysts, and anyone looking to gather insights from Truth Social profiles.

### What does Truth Social Scraper do?

The Truth Social Scraper is a versatile tool that enables you to:

#### Comprehensive Data Collection

- Extract complete profile information and statistics
- Scrape historical posts and content
- Gather engagement metrics (likes, shares, comments)
- Analyze follower and following networks
- Download media attachments and shared content

#### Advanced Monitoring Capabilities

- **Real-time Updates**: Track new posts and profile changes as they happen
- **Efficient Processing**: Only processes new content in subsequent runs when monitoring mode is enabled
- **Change Detection**: Automatically identifies and reports new posts, profile updates, and engagement changes
- **Scheduled Monitoring**: Set up automated runs to keep your data current
- **Incremental Data Collection**: Build comprehensive datasets over time without duplicating efforts

#### Flexible Scraping Options

- **User Profiles**: Extract all posts from any public profile
- **Targeted Scraping**: Focus on specific posts using direct URLs
- **Custom Date Ranges**: Limit scraping to specific time periods
- **Selective Data Extraction**: Choose which data points to collect

This tool is ideal for:

- Market research and competitive analysis
- Social media monitoring and brand tracking
- Academic research and data analysis
- Content aggregation and trend analysis
- Building custom datasets for machine learning

### Features

- **Comprehensive Data Collection**: Extract detailed profile information, posts, and engagement metrics
- **Dual Scraping Modes**:
  - **User Profiles**: Scrape all posts from a user's profile
  - **Individual Posts**: Target specific posts using their direct URLs
- **Flexible Input**: Supports multiple input formats:
  - Full profile URLs (e.g., `https://truthsocial.com/@username`)
  - Usernames with or without @ (e.g., `@username` or `username`)
  - Direct post URLs (e.g., `https://truthsocial.com/@username/posts/12345`)
- **Monitoring Capabilities**: Track new posts and updates with monitoring mode
- **Efficient Processing**: Concurrent scraping with adjustable concurrency settings
- **Reliable Performance**: Built-in proxy support and request retries
- **Multiple Export Formats**: Download data in JSON or CSV for easy analysis

### How to Use

#### Scraping User Profiles

To scrape all posts from a user's profile:

1. **Set Up**: Ensure you have an Apify account and access to the Apify platform.
2. **Configure Input**: Provide the user's profile URL or username in any of these formats:
   - `https://truthsocial.com/@username`
   - `@username`
   - `username`
3. **Adjust Settings**: Configure options like max items, monitoring mode, and proxy settings as needed.
4. **Run the Scraper**: Execute the scraper on the Apify platform.
5. **Data Collection**: The scraper will output all available posts from the specified profile.

#### Scraping Individual Posts

To scrape specific posts:

1. **Set Up**: Ensure you have an Apify account and access to the Apify platform.
2. **Configure Input**: Provide the full post URL in this format:
   - `https://truthsocial.com/@username/posts/12345`
3. **Run the Scraper**: Execute the scraper on the Apify platform.
4. **Data Collection**: The scraper will output detailed data for the specified post.

### Input Configuration

Here's an example of how to set up the input for the Apify Truth Social Profile Scraper:

```json
{
    "startUrls": [
        {
            "url": "https://truthsocial.com/@realDonaldTrump"
        },
        {
            "url": "@realDonaldTrump"
        },
        {
            "url": "realDonaldTrump"
        },
        {
            "url": "https://truthsocial.com/@realDonaldTrump/posts/114723536228494118"
        }
    ],
    "maxItems": 1000,
    "monitoringMode": false,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Input Fields Explanation

- `startUrls`: Array of objects containing one of these formats:
  - Full profile URL: `{"url": "https://truthsocial.com/@username"}`
  - Username with @: `{"url": "@username"}`
  - Plain username: `{"url": "username"}`
  - Individual post URL: `{"url": "https://truthsocial.com/@username/posts/12345"}`
- `maxItems`: Maximum number of items to scrape (default: 1000).
- `monitoringMode`: When enabled, only scrapes new posts compared to previous runs (default: false).
- `maxConcurrency`: Maximum number of pages processed simultaneously (default: 10).
- `minConcurrency`: Minimum number of pages processed simultaneously (default: 1).
- `maxRequestRetries`: Number of retries for failed requests (default: 100).
- `proxyConfiguration`: Proxy settings for enhanced scraping reliability.

### Monitoring Mode

When `monitoringMode` is enabled, the scraper will only collect new posts that haven't been seen in previous runs. This is useful for:

- Tracking new content from specific profiles over time
- Building a historical archive of posts
- Monitoring accounts for new activity without duplicating data

#### How Monitoring Mode Works

1. The scraper maintains a record of previously scraped post IDs
2. On subsequent runs with `monitoringMode: true`, it checks each post against this record
3. Only new posts (those not in the record) are processed and added to the output
4. The record is updated with any new post IDs found

### Output Structure

The scraper provides comprehensive information about the Truth Social profile and posts. The output structure will be documented here in a future update.

```json
{
    "id": "114723536228494118",
    "created_at": "2025-06-21T21:43:59.812Z",
    "in_reply_to_id": null,
    "quote_id": null,
    "in_reply_to_account_id": null,
    "sensitive": false,
    "spoiler_text": "",
    "visibility": "public",
    "language": "en",
    "uri": "https://truthsocial.com/@realDonaldTrump/114723536228494118",
    "url": "https://truthsocial.com/@realDonaldTrump/114723536228494118",
    "content": "<p>Thank you President Trump! </p><p>“Belarus opposition leader Siarhei Tsikhanouski freed from jail after rare visit by top US envoy” <a href=\"https://news.sky.com/story/belarus-opposition-leader-siarhei-tsikhanouski-freed-from-jail-after-rare-visit-by-top-us-envoy-13386817\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">news.sky.com/story/belarus-opp</span><span class=\"invisible\">osition-leader-siarhei-tsikhanouski-freed-from-jail-after-rare-visit-by-top-us-envoy-13386817</span></a></p>",
    "account": {
        "id": "107780257626128497",
        "username": "realDonaldTrump",
        "acct": "realDonaldTrump",
        "display_name": "Donald J. Trump",
        "locked": false,
        "bot": false,
        "discoverable": false,
        "group": false,
        "created_at": "2022-02-11T16:16:57.705Z",
        "note": "<p></p>",
        "url": "https://truthsocial.com/@realDonaldTrump",
        "avatar": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
        "avatar_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/780/257/626/128/497/original/454286ac07a6f6e6.jpeg",
        "header": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
        "header_static": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/headers/107/780/257/626/128/497/original/ba3b910ba387bf4e.jpeg",
        "followers_count": 10066106,
        "following_count": 72,
        "statuses_count": 27340,
        "last_status_at": "2025-06-22",
        "verified": true,
        "location": "",
        "website": "www.DonaldJTrump.com",
        "unauth_visibility": true,
        "chats_onboarded": true,
        "feeds_onboarded": true,
        "accepting_messages": false,
        "show_nonmember_group_statuses": false,
        "emojis": [],
        "fields": [],
        "tv_onboarded": false,
        "tv_account": false,
        "premium": false
    },
    "media_attachments": [],
    "mentions": [],
    "tags": [],
    "card": {
        "id": null,
        "url": "https://news.sky.com/story/belarus-opposition-leader-siarhei-tsikhanouski-freed-from-jail-after-rare-visit-by-top-us-envoy-13386817",
        "title": "Belarus opposition leader Siarhei Tsikhanouski freed from jail after rare visit by top US envoy",
        "description": "Mr Tsikhanouski was arrested after he announced he would run for the presidency against Alexander Lukashenko in the 2020 election. As he was detained and subsequently sentenced to 18 years in prison, his wife Sviatlana Tsikhanouskaya ran in his place and took over the opposition.",
        "type": "link",
        "author_name": "",
        "author_url": "",
        "provider_name": "news.sky.com",
        "provider_url": "",
        "html": "",
        "width": 800,
        "height": 450,
        "image": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/cache/preview_cards/images/055/456/142/original/929f249e9ab8aea9.jpg",
        "embed_url": "",
        "blurhash": "UHH_up0LW8E200-:x_E1%K?cD%NG?vxai^%M",
        "links": null,
        "group": null
    },
    "group": null,
    "quote": null,
    "in_reply_to": null,
    "reblog": null,
    "sponsored": false,
    "replies_count": 560,
    "reblogs_count": 3601,
    "favourites_count": 17514,
    "reaction": null,
    "upvotes_count": 17514,
    "downvotes_count": 0,
    "favourited": false,
    "reblogged": false,
    "muted": false,
    "pinned": false,
    "bookmarked": false,
    "poll": null,
    "emojis": [],
    "votable": false
}
```

***

### Output Fields Explanation

#### Post Information

- **`id`**: The unique identifier for the post (e.g., "114723536228494118").
- **`created_at`**: The ISO 8601 timestamp when the post was created (e.g., "2025-06-21T21:43:59.812Z").
- **`in_reply_to_id`**: The ID of the post this is replying to, if any (null for original posts).
- **`quote_id`**: The ID of the quoted post, if this is a quote post (null if not quoting).
- **`in_reply_to_account_id`**: The account ID this post is replying to, if any (null for original posts).
- **`sensitive`**: Boolean indicating if the post is marked as containing sensitive content.
- **`spoiler_text`**: Warning text that should be shown before the post content (empty string if none).
- **`visibility`**: The visibility of the post (e.g., "public", "unlisted", "private", "direct").
- **`language`**: The detected language of the post content (e.g., "en" for English).
- **`uri`**: The ActivityPub URI for the post (e.g., "https://truthsocial.com/@realDonaldTrump/114723536228494118").
- **`url`**: The web URL for viewing the post in a browser.
- **`content`**: The HTML-formatted content of the post, including any embedded links and formatting.

#### Account Information

- **`account`**: Object containing information about the post's author:
  - **`id`**: The unique identifier for the account.
  - **`username`**: The account's username without the @ symbol (e.g., "realDonaldTrump").
  - **`acct`**: The account's username with domain if applicable.
  - **`display_name`**: The account's display name (e.g., "Donald J. Trump").
  - **`locked`**: Boolean indicating if the account is locked (requires approval to follow).
  - **`bot`**: Boolean indicating if the account is a bot.
  - **`discoverable`**: Boolean indicating if the account is included in directory.
  - **`group`**: Boolean indicating if the account is a group account.
  - **`created_at`**: When the account was created (ISO 8601 timestamp).
  - **`note`**: The account's bio or profile information in HTML format.
  - **`url`**: The web URL for the account's profile.
  - **`avatar`**: URL of the account's avatar image.
  - **`avatar_static`**: URL of a static version of the avatar.
  - **`header`**: URL of the account's header image.
  - **`header_static`**: URL of a static version of the header.
  - **`followers_count`**: Number of accounts following this account.
  - **`following_count`**: Number of accounts this account is following.
  - **`statuses_count`**: Number of posts the account has made.
  - **`last_status_at`**: The date of the account's most recent post (YYYY-MM-DD).
  - **`verified`**: Boolean indicating if the account is verified.
  - **`location`**: The account's location (empty string if not specified).
  - **`website`**: The account's website URL.
  - **`emojis`**: Array of custom emojis used in the account's profile (empty if none).
  - **`fields`**: Array of profile metadata fields (empty if none).

#### Media and Attachments

- **`media_attachments`**: Array of media objects (photos, videos, etc.) attached to the post (empty if none).
- **`mentions`**: Array of accounts mentioned in the post (empty if none).
- **`tags`**: Array of hashtags used in the post (empty if none).
- **`card`**: Object containing rich preview card information for links in the post, including:
  - **`url`**: The URL of the linked page.
  - **`title`**: The title of the linked page.
  - **`description`**: A description of the linked page.
  - **`type`**: The type of the card (e.g., "link").
  - **`author_name`**: The author of the linked content (empty if none).
  - **`provider_name`**: The provider of the linked content.
  - **`image`**: URL of the preview image for the link.
  - **`width`** and **`height`**: Dimensions of the preview image.

#### Engagement Metrics

- **`replies_count`**: Number of replies to the post.
- **`reblogs_count`**: Number of times the post has been reblogged/boosted.
- **`favourites_count`**: Number of favorites/likes the post has received.
- **`upvotes_count`**: Number of upvotes the post has received.
- **`downvotes_count`**: Number of downvotes the post has received.

#### User Interaction Status

- **`favourited`**: Boolean indicating if the authenticated user has favorited this post.
- **`reblogged`**: Boolean indicating if the authenticated user has reblogged this post.
- **`muted`**: Boolean indicating if notifications from this post have been muted.
- **`pinned`**: Boolean indicating if this post is pinned to the profile.
- **`bookmarked`**: Boolean indicating if the authenticated user has bookmarked this post.

#### Additional Metadata

- **`poll`**: Object containing poll information if the post includes a poll (null if none).
- **`emojis`**: Array of custom emojis used in the post (empty if none).
- **`votable`**: Boolean indicating if the post can be voted on (for polls).
- **`group`**: Information about the group this post belongs to (null if not in a group).
- **`quote`**: The quoted post if this is a quote post (null if not quoting).
- **`in_reply_to`**: The post being replied to (null if not a reply).
- **`reblog`**: The original post if this is a reblog (null if original content).
- **`sponsored`**: Boolean indicating if this is a sponsored/promoted post.

### Explore More Scrapers

If you found this Apify Truth Social Profile Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/IWIOv7oeNxfcjTnX5/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com
