{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Conversation Scraper: Named Senders & Thread Member",
    "description": "LinkedIn Conversation Scraper with Named Senders & Thread Members extracts LinkedIn conversation data, including sender names, thread members, message text, timestamps, attachments, and conversation details. Ideal for CRM migration, communication analysis, workflow automation, and data backup.",
    "version": "0.2",
    "x-build-id": "3Zr68p4i5cGD96kzD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~linkedin-conversation-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-linkedin-conversation-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/scraper-engine~linkedin-conversation-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-linkedin-conversation-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/scraper-engine~linkedin-conversation-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-linkedin-conversation-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",
        "required": [
          "li_at"
        ],
        "properties": {
          "list_type": {
            "title": "📥 Inbox Type",
            "enum": [
              "PRIMARY_INBOX",
              "INBOX",
              "SECONDARY_INBOX",
              "ARCHIVE",
              "SPAM"
            ],
            "type": "string",
            "description": "Which inbox to scrape when no URLs are provided.",
            "default": "PRIMARY_INBOX"
          },
          "filter": {
            "title": "🔎 Conversation Filter",
            "enum": [
              "",
              "INMAIL",
              "STARRED",
              "UNREAD"
            ],
            "type": "string",
            "description": "Optional extra category filter applied on top of the inbox type.",
            "default": ""
          },
          "li_at": {
            "title": "🔐 LinkedIn Session Cookie (li_at)",
            "type": "string",
            "description": "Your `li_at` cookie from www.linkedin.com. Required for authentication. Open LinkedIn in your browser → DevTools → Application → Cookies → www.linkedin.com → copy the `li_at` value. ⚠️ Never share this cookie publicly — treat it like a password."
          },
          "max_convs": {
            "title": "💬 Maximum Conversations",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of conversations to scrape. Set `0` for no limit. Higher values = longer runs.",
            "default": 10
          },
          "max_messages_per_conv": {
            "title": "📝 Maximum Messages per Conversation",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of messages to extract from each conversation. Set `0` for no limit.",
            "default": 5
          },
          "today_limit": {
            "title": "📅 Only Today's Conversations",
            "type": "boolean",
            "description": "If enabled, only conversations with activity **today** are included.",
            "default": false
          },
          "date_limit": {
            "title": "🗓️ Date Limit (YYYY-MM-DD)",
            "type": "string",
            "description": "Skip conversations older than this date. Leave empty for no date limit."
          },
          "concurrency": {
            "title": "⚡ Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many message threads to fetch in parallel. Higher is faster but more likely to be rate-limited.",
            "default": 5
          },
          "max_retries": {
            "title": "🔁 Max Retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry each LinkedIn API request on transient errors (429 / 5xx).",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Configure Apify proxy usage for this run. Leave off to let the actor auto-escalate direct → residential.",
            "default": {
              "useApifyProxy": false
            }
          },
          "include_thread_members": {
            "title": "👥 Everyone in the Thread",
            "type": "boolean",
            "description": "List every person in each conversation, not just the one LinkedIn happens to name first. Each member comes back with their first and last name, headline, profile link, connection degree, pronouns and photo — exactly the same details the actor already gives you for the other side of a one-to-one chat. You also get the thread's own name (the title a group chat carries), a direct link to the thread, and the name of whoever started it. Turn this off if you only ever message one person at a time and want smaller rows. **Note:** this adds no extra requests and no extra charges — the people are already inside the response the actor downloads; the base version simply throws them away.",
            "default": true
          },
          "name_message_senders": {
            "title": "✍️ Name Who Sent Each Message",
            "type": "boolean",
            "description": "Put a real name on every message instead of just \"me\" or \"her/him\". Each message gains the sender's name and a link to their profile, and the conversation gains the name of whoever sent the most recent message. In a group thread this is the difference between a readable transcript and a wall of \"her/him\". The name is matched from the list of people in the thread — LinkedIn sends the sender's ID on the message and the names on the conversation, so this is a lookup inside data the actor already has, not an extra profile visit. If a message was sent by someone who has since left the thread, the name comes back empty and you still get their ID.",
            "default": true
          },
          "only_with_participants": {
            "title": "🎯 Only Threads Involving These People",
            "type": "array",
            "description": "Keep only the conversations that have at least one of these people in them. Type full names (`Jane Doe`) or LinkedIn profile links — matching ignores capitals and matches part of a name, so `acme` finds anyone whose name contains it. Leave the list empty to keep every conversation, which is what happens by default. This works on the full list of people in the thread, so it finds someone who is in a five-person group chat even when they are not the person LinkedIn lists first — the base actor cannot do that, because it only ever looks at one participant.",
            "items": {
              "type": "string"
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}