{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Account 360 Intelligence — Posts, Reels & Carousels",
    "description": "Read any public Instagram account over 7 to 90 days or its entire history. Returns every post, reel and carousel with full metadata, AI reel transcripts, on-image text from every carousel slide, top-level comments with reply counts, engagement analytics, and agent-ready soul.md and design.md briefs.",
    "version": "1.2",
    "x-build-id": "YZHRs1EyKIGJfoN2q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~instagram-account-360-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-instagram-account-360-intelligence",
        "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/sian.agency~instagram-account-360-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-instagram-account-360-intelligence",
        "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/sian.agency~instagram-account-360-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-instagram-account-360-intelligence",
        "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": {
          "username": {
            "title": "📸 Instagram account",
            "type": "string",
            "description": "The public Instagram account to analyse. Paste the profile URL straight from your browser (https://www.instagram.com/nasa/) or type the handle (nasa or @nasa) — all three work. Post and reel links are not accepted: this Actor reads a whole account, not a single post. Private accounts cannot be read.",
            "default": "nasa"
          },
          "windowDays": {
            "title": "📅 Time window",
            "enum": [
              "7",
              "14",
              "30",
              "60",
              "90",
              "all"
            ],
            "type": "string",
            "description": "FREE & PAID. How far back to collect posts. Every reel, feed post and carousel published inside this window is returned. \"Entire account\" ignores dates and pages back to the account's first post. Nothing else limits the run — set 🔢 Maximum posts if you want a ceiling. Free runs return the 3 newest posts of the window.",
            "default": "30"
          },
          "timeZone": {
            "title": "🌍 Timezone",
            "enum": [
              "UTC",
              "America/New_York",
              "America/Chicago",
              "America/Denver",
              "America/Los_Angeles",
              "America/Anchorage",
              "Pacific/Honolulu",
              "America/Toronto",
              "America/Mexico_City",
              "America/Bogota",
              "America/Lima",
              "America/Santiago",
              "America/Sao_Paulo",
              "America/Argentina/Buenos_Aires",
              "Europe/London",
              "Europe/Dublin",
              "Europe/Lisbon",
              "Europe/Paris",
              "Europe/Berlin",
              "Europe/Madrid",
              "Europe/Rome",
              "Europe/Amsterdam",
              "Europe/Brussels",
              "Europe/Zurich",
              "Europe/Vienna",
              "Europe/Stockholm",
              "Europe/Copenhagen",
              "Europe/Oslo",
              "Europe/Helsinki",
              "Europe/Warsaw",
              "Europe/Prague",
              "Europe/Athens",
              "Europe/Bucharest",
              "Europe/Istanbul",
              "Europe/Kyiv",
              "Europe/Moscow",
              "Asia/Dubai",
              "Asia/Riyadh",
              "Asia/Jerusalem",
              "Africa/Cairo",
              "Africa/Lagos",
              "Africa/Nairobi",
              "Africa/Johannesburg",
              "Asia/Karachi",
              "Asia/Kolkata",
              "Asia/Dhaka",
              "Asia/Bangkok",
              "Asia/Jakarta",
              "Asia/Singapore",
              "Asia/Kuala_Lumpur",
              "Asia/Hong_Kong",
              "Asia/Shanghai",
              "Asia/Taipei",
              "Asia/Manila",
              "Asia/Seoul",
              "Asia/Tokyo",
              "Australia/Perth",
              "Australia/Brisbane",
              "Australia/Sydney",
              "Pacific/Auckland"
            ],
            "type": "string",
            "description": "The timezone for the best-day and best-hour posting analysis. Pick your AUDIENCE's timezone, not your own — posting-time advice in the wrong timezone is worse than none.",
            "default": "UTC"
          },
          "includeImageText": {
            "title": "👁️ Read on-image text (OCR)",
            "type": "boolean",
            "description": "FREE & PAID. Read the text burned into every image, including each slide of every carousel, plus a description of the visual. This is where a post's hook usually lives — Instagram does not publish it as text.",
            "default": true
          },
          "includeTranscripts": {
            "title": "🎙️ Transcribe reel audio (PAID only)",
            "type": "boolean",
            "description": "PAID ONLY. AI transcript of every reel in the window, with timestamped segments and SRT/VTT subtitles. Free runs skip transcription — reels are still returned with their full metadata. Available on any paid Apify plan.",
            "default": true
          },
          "includeFrameworks": {
            "title": "🪝 Tag the format and hook of every post",
            "type": "boolean",
            "description": "FREE & PAID (no extra charge). Labels each post with the format it is built on (breakdown, problem-solution, tutorial, listicle, day-in-the-life and 15 more) and the hook its opening line uses (vulnerability, bold-claim, curiosity-gap and 9 more). The report then shows which frameworks the account MAKES most against which ones actually perform — routinely not the same answer. One model call for the whole window.",
            "default": true
          },
          "includeRundown": {
            "title": "✍️ Write the strategy rundown",
            "type": "boolean",
            "description": "FREE & PAID. An AI-written read of the account: content pillars, hooks that work, what is over- and under-performing, and recommendations. Saved to the HTML report and the run summary.",
            "default": true
          },
          "includeSimilarAccounts": {
            "title": "🔗 Find similar accounts",
            "type": "boolean",
            "description": "PAID (no extra charge). Returns the accounts Instagram itself lists as similar to this one — its \"suggested for you\" chain, which is the nearest thing to a competitor list the platform will tell you. Typically 30-80 accounts with username, name and verified status. Works on niche accounts, not just large ones. Saved to the run summary and shown in the report. Free runs skip it.",
            "default": true
          },
          "includeFollowing": {
            "title": "👥 Collect the following list",
            "type": "boolean",
            "description": "PAID (no extra charge). Returns the accounts this profile follows — its peer set, partners and the people it learns from. Read in pages of 50 and capped by the setting below, so a heavy-following account cannot run away with your time. Username, name and verified status only: Instagram does not publish follower counts or bios on this list, so it cannot be segmented by size without looking each account up. Free runs skip it.",
            "default": false
          },
          "maxFollowing": {
            "title": "👥 Max accounts followed to collect",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Leave it empty and the whole following list is collected. Type a number to stop at that many accounts. Only applies when 👥 Include following is on, which is a paid feature.",
            "default": 0
          },
          "includeSoul": {
            "title": "🧬 Build soul.md (rebuild brief)",
            "type": "boolean",
            "description": "FREE & PAID (charged once per run). Reverse-engineers the account into a brief another AI agent can build from: posting cadence, format mix, reel length, carousel length, content pillars read off the OUTLIER posts, hook patterns, voice and a seeded first-30-days calendar. Saved as soul.md and shown in the report with a one-click copy button. Every number in it is measured, not written by a model. On free runs it is built from the 3 free posts.",
            "default": false
          },
          "includeDesignSystem": {
            "title": "🎨 Build design.md (visual system)",
            "type": "boolean",
            "description": "FREE & PAID (charged once per run). Analyses the best-performing images and carousels and writes design.md: a ready-to-run image prompt that recreates the look (swap {SUBJECT} and {HEADLINE}), a second one for a full carousel slide by slide, and the tokens behind them — palette, typography, layout, mood, graphic devices, carousel arc. A style spec, not a brand guide: the account's own branding is left out, so what you reuse is the style. Copy it from the report in one click.",
            "default": false
          },
          "includeCloneKit": {
            "title": "🧰 Build clone-kit.md (one file for your LLM)",
            "type": "boolean",
            "description": "FREE & PAID (no extra charge). Assembles one markdown file you paste straight into any LLM to get a full build plan for an account in this style, written for YOUR brand. It carries the shape to match, the strategy and visual briefs this run produced, and the posts that beat their format median, with the machine plumbing stripped out. Fill in the brand fields below so it arrives personalised instead of asking you questions.",
            "default": false
          },
          "brandName": {
            "title": "🏷️ Your brand",
            "type": "string",
            "description": "What you do and who it is for, in a sentence. Written into clone-kit.md so the plan comes back in your voice."
          },
          "brandVoice": {
            "title": "🗣️ Your voice",
            "type": "string",
            "description": "How you sound: plain, expert, irreverent, warm, blunt. Two or three words is enough."
          },
          "designPrinciples": {
            "title": "🎨 Your design principles",
            "type": "string",
            "description": "The rules your visuals already follow. These override anything in the extracted style that conflicts with them."
          },
          "subjectMatter": {
            "title": "📷 Your subject matter",
            "type": "string",
            "description": "What your images actually show: people, product, screens, place. Replaces the source account's subjects so nothing of theirs is reproduced."
          },
          "brandColors": {
            "title": "🎨 Your colours",
            "type": "string",
            "description": "Your hex codes, comma separated. Leave blank to keep the palette measured from the account."
          },
          "includeOlderPins": {
            "title": "📌 Also return older pinned posts",
            "type": "boolean",
            "description": "PAID ONLY (billed as posts). Instagram pins up to 3 posts to the top of a grid — the account's own pick of its best work, often years old and so hidden by a date window. Pins inside your window are always returned and flagged `isPinned`. Turn this on to also get the pins published BEFORE it: ordinary rows, `isPinned: true`, never using up your maximum-posts budget, and kept out of the window statistics so a years-old post cannot skew your averages. Not available on free runs.",
            "default": false
          },
          "includeComments": {
            "title": "💬 Collect comments",
            "type": "boolean",
            "description": "FREE & PAID (charged per comment). Adds top-level comments to every post that has them, with author, text, likes and timestamp. Each comment also reports how many replies it received (reply text is not published by Instagram's data service). Free runs are capped at 5 comments per post; paid runs use the limit below.",
            "default": false
          },
          "maxImagesAnalyzed": {
            "title": "👁️ Max images to read",
            "minimum": 0,
            "type": "integer",
            "description": "Optional, and empty by default — every image on every post collected is read. Type a number to stop the on-image text pass there, newest post first. A carousel is read whole or not at all, so slides past the cap return `onImageText: null` (\"not read\"), not `\"\"` (read, no text on it). One image-analyzed charge per slide read, so this is the setting that bounds the biggest line on a carousel-heavy account.",
            "default": 0
          },
          "maxReelsTranscribed": {
            "title": "🎙️ Max reels to transcribe",
            "minimum": 0,
            "type": "integer",
            "description": "Optional, and empty by default — every reel collected is transcribed. Type a number to transcribe only that many, newest first. One reel-transcribed charge per reel with speech, so this bounds the other expensive line. Reels with no spoken audio still return all their metadata.",
            "default": 0
          },
          "maxCommentsPerPost": {
            "title": "💬 Max comments per post",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Leave it empty and every comment on each post is collected. Type a number to stop at that many per post, newest first. Only applies when 💬 Include comments is on. Free runs are limited to 5 per post. One comment-scraped charge per comment returned — a post with tens of thousands of comments will bill for all of them, so set a number if you want a ceiling.",
            "default": 0
          },
          "maxPosts": {
            "title": "🔢 Maximum posts",
            "minimum": 0,
            "type": "integer",
            "description": "The only limit on how much this run collects. Leave it empty (0) and every post in the time window is returned — the whole account, if you picked 🔢 Entire account. Set a number and it always applies, in every mode, newest post first. It is not a comments setting. Free runs always return the 3 newest posts.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}