{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Posts Scraper: Profiles, Reels, No Login",
    "description": "Instagram posts scraper for public profiles, no login: each profile's newest posts and reels back to its first post, or single posts by URL. Rows carry caption, hashtags, likes, comments, reel plays, carousels, location, tagged users and collab flags. Excel, CSV or API, scheduled; pay per post.",
    "version": "0.1",
    "x-build-id": "3E8vEmtydtroeqvt0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~instagram-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-instagram-posts-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/automation_craft~instagram-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-instagram-posts-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/automation_craft~instagram-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-instagram-posts-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "usernames": {
            "title": "Instagram usernames or profile URLs",
            "type": "array",
            "description": "Public Instagram profiles to read, one per line: a username (natgeo or @natgeo) or a profile URL (instagram.com/natgeo). Capitals do not matter. Up to 500 per run. Each profile gives one profile row (followers, following, bio, links, verified) and its newest posts and reels. A username with no public profile gets a free status row.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post or reel URLs",
            "type": "array",
            "description": "Single posts to read, one per line: a post or reel URL (instagram.com/p/CODE, /reel/CODE, /reels/CODE or /tv/CODE) or the post code alone. Up to 500 per run. Each post found is one row with its full details and its first comments (up to 15), charged as a Post and a Post details event. A post that does not exist or is not shown without a login gets a free status row. Filters and dates do not apply to these: you named the post.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerProfile": {
            "title": "Newest posts per profile",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many of each profile's newest posts are read, in the order of the profile's grid (pinned posts first, then newest to oldest), back to the first post if you ask for enough. Every post read counts, whether it is delivered, left out by a filter, or already known to your memory, so a filtered run may deliver fewer. Posts newer than the end date do not count. Default 12, at most 10,000. 0 means profile rows only (each charged as a Profile)."
          },
          "maxPosts": {
            "title": "Post rows per run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The cap of post rows for the whole run, across every profile and post URL (profile rows are not counted). No cap when left out: the per profile number and your charge limit bound the run."
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Keep posts from this moment on (UTC): YYYY-MM-DD, YYYY-MM-DDTHH:MM, today, yesterday, \"7 days\", \"2 weeks\", \"3 months\" or \"6 hours\" (counted back from the run's start). The walk of a profile stops at the first older post (pinned posts aside), so a date also makes a run shorter."
          },
          "postedBefore": {
            "title": "Posted on or before",
            "type": "string",
            "description": "Keep posts up to this moment (UTC): YYYY-MM-DD (the end of that day), YYYY-MM-DDTHH:MM, today, yesterday, \"N days\" or \"N hours\". Newer posts are skipped free and do not count toward the newest posts per profile. After the profile's first page (which holds its pinned posts) the walk jumps straight to the end date, so an old window is reached in one or two calls."
          },
          "mediaTypes": {
            "title": "Post types",
            "type": "array",
            "description": "Keep only these kinds of posts. All kinds when left empty. Posts of other kinds still count toward the newest posts per profile and are not charged.",
            "items": {
              "type": "string",
              "enum": [
                "photo",
                "video",
                "reel",
                "carousel"
              ],
              "enumTitles": [
                "Photos",
                "Videos (not reels)",
                "Reels",
                "Carousels"
              ]
            }
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many likes (a post whose owner hides its likes does not pass). Default 0."
          },
          "minComments": {
            "title": "Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many comments. Default 0."
          },
          "minViews": {
            "title": "Minimum plays (reels)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only reels and videos with at least this many plays. Posts without a play count (photos, carousels, and reels whose count was not found) do not pass. Default 0."
          },
          "includeCollabPosts": {
            "title": "Include collab posts",
            "type": "boolean",
            "description": "Collab posts are posts another account owns that the profile accepted onto its grid (on some brand profiles half the grid). On by default: they are delivered with isCollab true and ownerUsername naming the owner. Off: they are left out and not charged."
          },
          "skipPinnedPosts": {
            "title": "Skip pinned posts",
            "type": "boolean",
            "description": "Leave out the posts the profile pinned to the top of its grid (often old posts). Skipped pinned posts do not count toward the newest posts per profile. Off by default; pinned posts carry isPinned true."
          },
          "includeReelPlayCounts": {
            "title": "Reel play counts",
            "type": "boolean",
            "description": "Add each reel's play count, read from the profile's reels tab (about one small extra call per 12 reels, no extra charge). On by default; playCountStatus says ok, or why a reel has none (an old pinned reel can be beyond the newest reels read)."
          },
          "memoryName": {
            "title": "Memory name (monitor profiles over time)",
            "type": "string",
            "description": "Give a name and later runs with the same name deliver and charge only posts not delivered before under this name: a scheduled run of the 12 newest posts then bills only what is new. Known posts are read and skipped free. A memory belongs to this Actor; two runs on one name at the same time: the second runs free. Letters, digits, spaces and . _ , : # ( ) - only."
          },
          "resetMemory": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget every post the named memory holds before this run: every post counts as new again (and is charged again)."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy, one exit address at a time; when Instagram asks an exit to wait, the run moves to a fresh one, and after 12 it reads on from its own address. A residential or other Apify proxy group is not used (the datacenter pool answers, and the run says so); your own proxy URLs are used as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}