{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Profile Scraper - Follower Counts, Bio",
    "description": "Scrape Instagram profiles from handles or profile links. One row per account: bio and bio links, exact follower, following and post counts, verified and private flags, category, published e-mail and phone, and engagement over recent posts. $0.70 per 1,000 profiles.",
    "version": "0.1",
    "x-build-id": "t3ebOFIllMC7LZDJQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~instagram-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-instagram-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/dami_studio~instagram-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-instagram-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/dami_studio~instagram-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-instagram-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",
        "properties": {
          "usernames": {
            "title": "Instagram usernames or profile URLs",
            "minItems": 0,
            "maxItems": 1000,
            "type": "array",
            "description": "One entry per profile. Any of these forms works: nasa, @nasa, instagram.com/nasa, https://www.instagram.com/nasa/. Up to 1,000 per run. Duplicates are removed before anything is charged.",
            "items": {
              "type": "string"
            }
          },
          "includeAccountAbout": {
            "title": "Country, join date and former usernames",
            "type": "boolean",
            "description": "Reads Instagram's About this account panel and adds the account's country of registration, the date it was created, and how many usernames it has used before (the number, not the names - Instagram keeps those behind a tap). Needs a paid Apify plan - on the free plan this stays off and the rest of the run is unaffected. It costs extra per profile on top of the profile price. Be aware, the country line only shows on larger accounts: smaller ones still return the join date, with country null. Leave this off and you pay the profile price only.",
            "default": false
          },
          "includeLatestPosts": {
            "title": "Include the recent posts themselves",
            "type": "boolean",
            "description": "Adds the recent posts themselves to each row: link, caption, likes, comments, hashtags, mentions, tagged people, co-authors, location, music, whether the post is pinned, and whether likes or comments are switched off. The field names are the same as in our post scraper. The posts are listed one per line in the Recent posts tab of the output; the Profiles tab keeps one row per account. Off by default. It changes nothing about the engagement figures, which are worked out from those posts either way. This only decides whether the posts ride along in the row."
          },
          "maxRelatedProfiles": {
            "title": "Also read related profiles",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Leave empty to read only your list. Set a number, up to 50, and after your list the run also reads that many of the accounts Instagram shows as related to the profiles in it, in the order they are listed, skipping any already in your list. Each one is read and charged as a profile, and its row carries relatedOf, the handle it was found under. Only one step: the related accounts of a related account are not read. Never followers or following lists."
          },
          "maxItems": {
            "title": "Maximum profiles",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many profiles from the list above. Leave it empty to read the whole list. Useful while testing, because you pay per profile. To cap what a run can cost instead, set a maximum cost for the run in its run options (maxTotalChargeUsd in the API): the run stops once it reaches that amount."
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only profiles with at least this many followers. A profile this filter reads and leaves out is charged as a profile, the same as one it delivers, because it was read. A profile whose follower count did not come back is left out and not charged."
          },
          "maxFollowers": {
            "title": "Maximum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only profiles with at most this many followers. A profile this filter reads and leaves out is charged as a profile, the same as one it delivers. A profile whose follower count did not come back is left out and not charged."
          },
          "accountType": {
            "title": "Account type",
            "enum": [
              "personal",
              "creator",
              "business",
              "creatorOrBusiness"
            ],
            "type": "string",
            "description": "Keep only personal, creator or business accounts, or any professional account (creator or business). A profile this filter reads and leaves out is charged as a profile. When Instagram did not say which type an account is, it is left out and not charged."
          },
          "minEngagementRate": {
            "title": "Minimum engagement rate (%)",
            "minimum": 0,
            "type": "number",
            "description": "Keep only profiles whose engagement.engagementRate is at least this, in percent: 1 means 1%. The rate is worked out from the recent posts. A profile this filter reads and leaves out is charged as a profile. One with no recent posts to work it out from, such as a private account, is left out and not charged."
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only profiles whose newest recent post is at most this many days old. A profile this filter reads and leaves out is charged as a profile. One with no recent posts to date, such as a private account, is left out and not charged."
          },
          "bioOrNameContains": {
            "title": "Word in the bio or name",
            "maxItems": 50,
            "type": "array",
            "description": "Keep only profiles whose bio or display name contains at least one of these words or phrases, ignoring upper and lower case. A profile this filter reads and leaves out is charged as a profile. One whose bio did not come back and whose name does not match is left out and not charged.",
            "items": {
              "type": "string"
            }
          },
          "categoryContains": {
            "title": "Word in the category",
            "maxItems": 50,
            "type": "array",
            "description": "Keep only profiles whose category (for example Product/service or Government Agencies) contains at least one of these words, ignoring upper and lower case. A profile this filter reads and leaves out is charged as a profile; a personal account has no category, so it is left out and charged too. A professional account whose category did not come back is left out and not charged.",
            "items": {
              "type": "string"
            }
          },
          "concurrency": {
            "title": "Profiles read at once",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many profiles are read in parallel. The default of 6 is the setting that keeps the data most complete; raise it for speed on large lists, lower it if you are supplying your own proxy servers and they are few."
          },
          "sessionCookies": {
            "title": "Account cookies (not needed)",
            "minItems": 0,
            "maxItems": 20,
            "type": "array",
            "description": "Optional: your own session, used only for your run. You are responsible for using it within the site's terms. Runs work without it.",
            "items": {
              "type": "string"
            }
          },
          "proxyUrls": {
            "title": "Your own proxy servers (optional)",
            "minItems": 0,
            "maxItems": 50,
            "type": "array",
            "description": "Leave this empty for a normal run. Fill it in only if you want the traffic to leave through proxy servers you already pay for, one URL per line, in the form http://user:pass@host:port.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}