{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Profile Scraper: Posts and Reels",
    "description": "Instagram scraper for public profiles, no login. Give it usernames, get one row per post or reel: caption, hashtags, mentions, likes, comments, views, video length, video file, audio track, tagged accounts and location, plus an optional profile row. A profile that returns nothing is free.",
    "version": "1.0",
    "x-build-id": "wBEOCB1sbhi37SGp3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/accountable_eel~ig-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-accountable_eel-ig-profile-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/accountable_eel~ig-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-accountable_eel-ig-profile-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/accountable_eel~ig-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-accountable_eel-ig-profile-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": [
          "usernames"
        ],
        "properties": {
          "usernames": {
            "title": "Instagram usernames",
            "type": "array",
            "description": "One Instagram username per line. @name, a bare name, or a full profile link all work. No login and no cookies: this reads only what a signed-out visitor can see. Accepted formats: instagram, @natgeo, https://www.instagram.com/nasa/. You're only charged for the ones we actually find — a miss costs nothing.",
            "items": {
              "type": "string"
            }
          },
          "testRun": {
            "title": "Try it first — only process the first 5",
            "type": "boolean",
            "description": "Turn this on to test your input on a small sample before running the full list. Turn it off to process everything.",
            "default": false
          },
          "onlyFound": {
            "title": "Hide rows with no result",
            "type": "boolean",
            "description": "Only keep rows where something was actually found. Misses are always free, whether or not you show them here.",
            "default": false
          },
          "includeKeywords": {
            "title": "Only keep rows containing",
            "type": "array",
            "description": "Optional. Only keep results that mention at least one of these words (e.g. a job title, a city, a product name). Leave empty to keep everything.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Skip rows containing",
            "type": "array",
            "description": "Optional. Drop any result that mentions one of these words. Leave empty to skip nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Stop after this many results",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Stop the run once this many results have been found — useful for a quick, cheap sample. Leave blank for no limit."
          },
          "limit": {
            "title": "Most posts to return per profile",
            "type": "integer",
            "description": "You pay per post returned, so this is also your budget control. Instagram shows a signed-out visitor at most 12 posts per tab, so about 12 to 24 per profile is the real ceiling no matter what you set here.",
            "default": 30
          },
          "since": {
            "title": "Only posts since",
            "type": "string",
            "description": "Optional. A date like 2026-08-01. Posts older than this are dropped before any detail request is made, so they cost you nothing. Leave empty for everything the profile shows.",
            "default": ""
          },
          "mediaType": {
            "title": "Which media to collect",
            "enum": [
              "all",
              "reels",
              "posts"
            ],
            "type": "string",
            "description": "\"All\" reads both the posts grid and the reels tab and merges them. \"Reels only\" reads the reels tab, which is also the only place Instagram shows reels that are hidden from the main grid. \"Posts only\" skips the reels tab entirely and is the cheapest option.",
            "default": "all"
          },
          "includeProfile": {
            "title": "Include a profile row",
            "type": "boolean",
            "description": "On by default. Adds one row per username with followers, following, bio, bio link, profile picture and verified status. Profile rows are never billed.",
            "default": true
          },
          "detail": {
            "title": "How much detail per post",
            "enum": [
              "basic",
              "full"
            ],
            "type": "string",
            "description": "\"Full\" adds the exact posting time, tagged accounts, location and collaborators by reading each post's own page: about 4x the data transfer. \"Basic\" reads only the embed page, which is 2.3x cheaper and still gives likes, comments, views, video length, dimensions, the video file and the audio track, but dates the post to the day rather than the minute.",
            "default": "full"
          },
          "columns": {
            "title": "Which columns do you want?",
            "type": "array",
            "description": "Choose which pieces of information to include in each result row. All are included by default.",
            "items": {
              "type": "string",
              "enum": [
                "username",
                "postCount",
                "truncated",
                "detailCount",
                "posts",
                "kind",
                "ig_user_id",
                "full_name",
                "bio",
                "followers",
                "following",
                "posts_count",
                "profile_pic_url",
                "is_verified",
                "external_url",
                "shortcode",
                "url",
                "type",
                "posted_at",
                "caption",
                "hashtags",
                "mentions",
                "like_count",
                "comment_count",
                "view_count",
                "duration_s",
                "width",
                "height",
                "display_url",
                "video_url",
                "thumbnail_url",
                "carousel_children",
                "audio",
                "tagged_users",
                "location",
                "is_paid_partnership",
                "coauthors",
                "detailFetched",
                "raw"
              ],
              "enumTitles": [
                "Username",
                "Posts returned",
                "More posts were available",
                "Posts with full detail fetched",
                "All rows found (full list)",
                "Row type (profile or post)",
                "Instagram user ID",
                "Display name (profile row)",
                "Bio (profile row)",
                "Followers (profile row)",
                "Following (profile row)",
                "Total posts on the account (profile row)",
                "Profile picture (profile row)",
                "Verified (profile row)",
                "Bio link (profile row)",
                "Post shortcode",
                "Post link",
                "Post type",
                "Posted on",
                "Caption",
                "Hashtags",
                "Mentions",
                "Likes",
                "Comments",
                "Views (videos only)",
                "Video length in seconds",
                "Width",
                "Height",
                "Image",
                "Video file",
                "Thumbnail",
                "Carousel slides",
                "Audio track",
                "Tagged accounts",
                "Location",
                "Paid partnership",
                "Collaborators",
                "Full detail fetched for this post",
                "Raw source objects"
              ]
            },
            "default": [
              "username",
              "postCount",
              "truncated",
              "detailCount",
              "posts",
              "kind",
              "ig_user_id",
              "full_name",
              "bio",
              "followers",
              "following",
              "posts_count",
              "profile_pic_url",
              "is_verified",
              "external_url",
              "shortcode",
              "url",
              "type",
              "posted_at",
              "caption",
              "hashtags",
              "mentions",
              "like_count",
              "comment_count",
              "view_count",
              "duration_s",
              "width",
              "height",
              "display_url",
              "video_url",
              "thumbnail_url",
              "carousel_children",
              "audio",
              "tagged_users",
              "location",
              "is_paid_partnership",
              "coauthors",
              "detailFetched",
              "raw"
            ]
          },
          "expandRows": {
            "title": "One row per post (recommended) — turn off for one row per profile instead",
            "type": "boolean",
            "description": "When on, each post found gets its own row instead of being grouped under its profile. You're still only charged once per profile, no matter how many rows it produces.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Parallel requests. Keep conservative — this target has no browser fallback, so getting blocked costs more than slow-and-steady.",
            "default": 2
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy config. Residential recommended for anti-bot-sensitive targets.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}