{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Ads Scraper With Advertiser Data",
    "description": "Reddit Ads Scraper — Scrape Reddit ads with advertiser names, ad text, titles, creatives, landing pages, promoted posts, and campaign details. Analyze competitor advertising, discover campaigns, monitor ad trends, and build structured marketing intelligence.",
    "version": "0.1",
    "x-build-id": "loJqbJeKKDABfEsuY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~reddit-ads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-reddit-ads-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/scrapier~reddit-ads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-reddit-ads-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/scrapier~reddit-ads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-reddit-ads-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": {
          "advertiserTargets": {
            "title": "🏢 Advertisers or ad keywords (bulk supported)",
            "type": "array",
            "description": "📋 Add one or more keywords or advertiser names to search the Reddit Ads library (e.g. `ai`, `crypto`, `fitness`). ✨ Use **Add item** to queue several searches in a single run. 💡 Leave this empty to pull the **entire** public ad catalog. ℹ️ Reddit's public gallery serves the same fixed ~30-ad sample to every anonymous search — this field mainly controls what's LOGGED per pass; every ad is still returned and enriched with advertiser data below.",
            "items": {
              "type": "string"
            }
          },
          "queries": {
            "title": "🔎 Search keywords (legacy alias)",
            "type": "array",
            "description": "♻️ Legacy alias for **Advertisers or ad keywords** above, kept for compatibility with the base Reddit Ads Scraper's input shape. Used only when **advertiserTargets** is empty.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "🔢 Max ads per keyword",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "📦 How many ads to collect for each keyword. ℹ️ Reddit's public ad gallery exposes roughly **30 ads** to anonymous visitors — this is hard-capped at 30, the real ceiling.",
            "default": 5
          },
          "industry": {
            "title": "🏭 Industry filter",
            "enum": [
              "",
              "TECH_B2C",
              "TECH_B2B",
              "EDUCATION",
              "ENTERTAINMENT",
              "HEALTH_AND_BEAUTY",
              "GAMING",
              "EMPLOYMENT",
              "RETAIL_AND_ECOMMERCE",
              "AUTO",
              "FINANCIAL_SERVICES",
              "TRAVEL",
              "REAL_ESTATE",
              "GAMBLING_AND_FANTASY_SPORTS",
              "POLITICS_AND_GOVERNMENT",
              "CONSUMER_PACKAGED_GOODS",
              "OTHER"
            ],
            "type": "string",
            "description": "📊 Keep only ads from a specific industry. Choose **Any industry** to skip this filter.",
            "default": ""
          },
          "budgetCategory": {
            "title": "💵 Budget filter",
            "enum": [
              "",
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "type": "string",
            "description": "💸 Keep only ads in a given spend tier. Choose **Any budget** to skip this filter.",
            "default": ""
          },
          "postType": {
            "title": "🎨 Ad format filter",
            "enum": [
              "",
              "IMAGE",
              "VIDEO",
              "CAROUSEL",
              "FREE_FORM"
            ],
            "type": "string",
            "description": "🖼️ Keep only a specific creative format. Choose **Any format** to skip this filter.",
            "default": ""
          },
          "placements": {
            "title": "📍 Placement filter",
            "enum": [
              "",
              "FEED",
              "COMMENTS_PAGE",
              "CONVERSATION"
            ],
            "type": "string",
            "description": "📰 Keep only ads shown in a specific placement. Choose **Any placement** to skip this filter.",
            "default": ""
          },
          "objectiveType": {
            "title": "🎯 Campaign objective filter",
            "enum": [
              "",
              "AWARENESS",
              "CONVERSIONS",
              "APP_INSTALLS",
              "TRAFFIC",
              "VIDEO_VIEWABLE_IMPRESSIONS"
            ],
            "type": "string",
            "description": "🚀 Keep only ads running toward a specific marketing objective. Choose **Any objective** to skip this filter.",
            "default": ""
          },
          "includeAdvertiserProfile": {
            "title": "🕵️ Include advertiser account intelligence",
            "type": "boolean",
            "description": "📈 When ON, each ad row is enriched with the advertiser's real post/comment/total karma, account age and last-activity date, sourced from a public Reddit archive (Arctic Shift). ℹ️ This is an aggregate snapshot, updated infrequently — some accounts may show null values.",
            "default": true
          },
          "includeSubredditAffinity": {
            "title": "🌐 Include subreddit affinity",
            "type": "boolean",
            "description": "🗺️ When ON, each ad row also lists which subreddits the advertiser's Reddit account is organically active in, ranked by real activity share — a genuine 'who is really behind this ad, and where else do they post' signal.",
            "default": true
          },
          "maxAffinitySubreddits": {
            "title": "🔢 Max subreddits per advertiser",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "📦 How many top subreddits to list per advertiser in the affinity breakdown.",
            "default": 10
          },
          "minAffinityActivityCount": {
            "title": "📉 Minimum activity count for affinity",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "🧹 Drop subreddits where the advertiser's recorded activity count is below this threshold — keeps the affinity list meaningful instead of noise.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "🛡️ Optional. The Actor runs **without a proxy by default** and automatically adjusts its connection if needed. ⚙️ Power users can pre-select a proxy here.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}