{
  "openapi": "3.0.1",
  "info": {
    "title": "OnlyFans Model Leads Scraper",
    "description": "OnlyFans lead scraper and OnlyFans profile search for OFM agencies. Find creators by niche, keep leads with Instagram links, filter likes and price, and export profiles with stats and social links. Pay only for model leads that pass your filters.",
    "version": "3.0",
    "x-build-id": "2mQ95JMjfelTJCTYz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deepmine~onlyfans-model-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deepmine-onlyfans-model-leads-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/deepmine~onlyfans-model-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deepmine-onlyfans-model-leads-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/deepmine~onlyfans-model-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deepmine-onlyfans-model-leads-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": {
          "keywords": {
            "title": "🔍 Niche keywords",
            "type": "array",
            "description": "One lead pool per keyword, one per line, e.g. \"fitness\", \"latina\", \"gamer girl\", \"miami\". A creator found by two keywords comes once.",
            "default": [
              "fitness",
              "latina"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "📊 Max leads per keyword",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop each keyword after this many leads (with New or Top: for the whole run). You pay per lead delivered.",
            "default": 100
          },
          "requireInstagram": {
            "title": "📸 Only leads with Instagram",
            "type": "boolean",
            "description": "Keep only creators with an Instagram account you can reach out to.",
            "default": false
          },
          "searchMode": {
            "title": "🎯 Search type",
            "enum": [
              "query",
              "new",
              "top"
            ],
            "type": "string",
            "description": "Keywords is the usual lead search. New finds recently joined creators, Top established ones; neither uses keywords.",
            "default": "query"
          },
          "maxLikes": {
            "title": "❤️ Max likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only creators with fewer likes: smaller and newer creators answer outreach more often. Empty = no limit."
          },
          "freeOnly": {
            "title": "🆓 Only free profiles",
            "type": "boolean",
            "description": "Keep only creators with a free subscription.",
            "default": false
          },
          "minSubscribers": {
            "title": "👥 Min subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Empty = no minimum. Profiles that hide their subscriber count count as 0, so any minimum leaves them out."
          },
          "maxSubscribers": {
            "title": "👥 Max subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Empty = no limit. Profiles that hide their subscriber count count as 0, so they pass any maximum."
          },
          "country": {
            "title": "🌎 Country code",
            "type": "string",
            "description": "Two-letter country code, e.g. US, GB, DE or BR. The search index filters its whole catalogue by the rough location it holds for each creator, before any result is read. Rows don't carry a verified country; each row names the filters it matched in matchedSourceFilters. Use either Country or City."
          },
          "city": {
            "title": "📍 City, region or ZIP",
            "type": "string",
            "description": "A place such as miami, los angeles or 90210. The index keeps creators it places near it: a rough location, not a verified residence. Use either Country or City."
          },
          "cityRadiusKm": {
            "title": "📏 Radius around the city",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Optional distance around City. Empty = the index's own default area."
          },
          "gender": {
            "title": "⚧️ Gender",
            "enum": [
              "any",
              "female",
              "male"
            ],
            "type": "string",
            "description": "The search index's own gender label for each creator (not checked by this Actor). Most of the index is women, so Women changes little; Men narrows the results to male creators.",
            "default": "any"
          },
          "minAge": {
            "title": "🎂 Min age",
            "minimum": 18,
            "maximum": 99,
            "type": "integer",
            "description": "The age the search index lists for a creator, as the creator publishes it; not verified. Empty = no limit."
          },
          "maxAge": {
            "title": "🎂 Max age",
            "minimum": 18,
            "maximum": 99,
            "type": "integer",
            "description": "Upper end of the index's listed age. Empty = no limit."
          },
          "minPrice": {
            "title": "💵 Min price",
            "minimum": 0,
            "type": "integer",
            "description": "Keep creators whose subscription costs at least this much. Checked on the price each row shows, after any promotion: a page on a free-trial promotion shows Free and is left out. Empty = no limit."
          },
          "maxPrice": {
            "title": "💵 Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Keep creators whose shown subscription price is at most this much (0 = free only). Empty = no limit."
          },
          "newOnly": {
            "title": "🆕 Only new creators",
            "type": "boolean",
            "description": "Keep creators the search index lists as joined in the last 30 days.",
            "default": false
          },
          "requireTwitter": {
            "title": "🐦 Only leads with X (Twitter)",
            "type": "boolean",
            "description": "Keep only leads whose OnlyFans listing links an X (Twitter) account.",
            "default": false
          },
          "requireTikTok": {
            "title": "🎵 Only leads with TikTok",
            "type": "boolean",
            "description": "Keep only leads whose OnlyFans listing links a TikTok account.",
            "default": false
          },
          "minLikes": {
            "title": "❤️ Min likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only profiles with at least this many likes, to skip inactive pages. Empty = no limit."
          },
          "sortBy": {
            "title": "🔃 Sort leads by",
            "enum": [
              "relevance",
              "likes",
              "subscribers",
              "photos",
              "videos",
              "score",
              "name"
            ],
            "type": "string",
            "description": "Order of the leads in every dataset of the run. Relevance keeps OnlyFans' own order. It orders the profiles this run collected (up to the maximum per keyword), not the whole search index.",
            "default": "likes"
          },
          "sortOrder": {
            "title": "↕️ Order",
            "enum": [
              "descending",
              "ascending"
            ],
            "type": "string",
            "description": "Descending shows the highest values first (or Z-A for Name); ascending shows the lowest values first (or A-Z for Name).",
            "default": "descending"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}