{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Ads Scraper",
    "description": "Reddit Ads Scraper: Extract Reddit ad data including advertiser names, ad copy, creatives, landing page URLs, timestamps, engagement metrics, and targeting signals. Analyze competitor campaigns, ad strategies, audience interests, and performance trends for Reddit advertising research.",
    "version": "0.2",
    "x-build-id": "JsjFwC5jA1XK696bg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~reddit-ads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-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/scraper-engine~reddit-ads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-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/scraper-engine~reddit-ads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-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": {
          "queries": {
            "title": "🔎 Search keywords (bulk supported)",
            "type": "array",
            "description": "📋 Add one or more keywords 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.",
            "items": {
              "type": "string"
            }
          },
          "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. `FEED` and `COMMENTS_PAGE` are confirmed real placement values; `CONVERSATION` is accepted but has never been observed on real ads and may not match anything. 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": ""
          },
          "maxItems": {
            "title": "🔢 Max ads per keyword",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "📦 How many ads to collect for each keyword, up to the real hard ceiling of **30**. ℹ️ Reddit's public ad gallery exposes at most 30 ads total to anonymous visitors — this input cannot exceed that, and the Actor always returns as many as the gallery currently holds (fewer if the gallery itself has fewer).",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "🛡️ Optional. The Actor runs **without a proxy by default** and automatically upgrades its connection in stages if Reddit slows it down. ⚙️ 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}