{
  "openapi": "3.0.1",
  "info": {
    "title": "ads.txt / app-ads.txt / sellers.json Extractor",
    "description": "Fetch and parse the IAB Tech Lab ad-tech transparency triad — ads.txt, app-ads.txt and sellers.json — for any domain or list of domains. One flat, normalized row per seller relationship, seller entry or variable, with a lossless raw copy. The authorized-digital-seller graph as data. Pay per record.",
    "version": "0.1",
    "x-build-id": "NwNqTrJxbDawNM9Ha"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datamule~ads-txt-sellers-json-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datamule-ads-txt-sellers-json-extractor",
        "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/datamule~ads-txt-sellers-json-extractor/runs": {
      "post": {
        "operationId": "runs-sync-datamule-ads-txt-sellers-json-extractor",
        "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/datamule~ads-txt-sellers-json-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-datamule-ads-txt-sellers-json-extractor",
        "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": {
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "A single domain to fetch, e.g. nytimes.com. A full URL (https://www.nytimes.com/ads.txt) or a bare host also works — the actor reduces it to the host and requests the well-known files from https://<domain>/. Use this OR the Domains list below (or both)."
          },
          "domains": {
            "title": "Domains (list)",
            "type": "array",
            "description": "A list of domains to fetch in one run (e.g. nytimes.com, cnn.com, openx.com). Each is reduced to its host and its ads.txt / app-ads.txt / sellers.json fetched. Duplicates are dropped. Every emitted seller/relationship line is one billable record.",
            "items": {
              "type": "string"
            }
          },
          "fileType": {
            "title": "File type",
            "enum": [
              "all",
              "ads_txt",
              "app_ads_txt",
              "sellers_json"
            ],
            "type": "string",
            "description": "Which IAB transparency file(s) to fetch per domain. 'all' tries the whole triad (a domain typically has ads.txt OR sellers.json, not all three — missing files are skipped cleanly). ads.txt = Authorized Digital Sellers (web publishers); app-ads.txt = the mobile-app equivalent; sellers.json = the reverse authorized-seller map every ad exchange / SSP publishes.",
            "default": "all"
          },
          "relationship": {
            "title": "Relationship filter (ads.txt / app-ads.txt)",
            "enum": [
              "",
              "DIRECT",
              "RESELLER"
            ],
            "type": "string",
            "description": "Optionally keep only seller-relationship lines of this account type. DIRECT = the publisher's direct account with the ad system; RESELLER = an authorized reseller. Leave as 'Any' to keep both. Applies only to ads.txt / app-ads.txt lines (not sellers.json, not variable lines).",
            "default": ""
          },
          "sellerType": {
            "title": "Seller type filter (sellers.json)",
            "enum": [
              "",
              "PUBLISHER",
              "INTERMEDIARY",
              "BOTH"
            ],
            "type": "string",
            "description": "Optionally keep only sellers.json seller rows of this type. PUBLISHER = the seller owns the inventory; INTERMEDIARY = it passes inventory through; BOTH = either. Leave as 'Any' to keep all. Applies only to sellers.json rows.",
            "default": ""
          },
          "includeVariables": {
            "title": "Include ads.txt variable lines",
            "type": "boolean",
            "description": "When on (default), KEY=value variable lines in ads.txt / app-ads.txt (OWNERDOMAIN, MANAGERDOMAIN, CONTACT, SUBDOMAIN, …) are emitted as recordType='variable' rows. Turn off to keep only seller-relationship lines.",
            "default": true
          },
          "includeFileMeta": {
            "title": "Include sellers.json file metadata row",
            "type": "boolean",
            "description": "When on (default), one recordType='file_meta' row per sellers.json file carries the file-level contact_email, version and identifiers[]. Turn off to emit only the individual seller rows.",
            "default": true
          },
          "maxRecords": {
            "title": "Max records (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum total number of records to emit across all domains and files (a large ad exchange's sellers.json alone can hold tens of thousands of sellers). Each emitted record is one billable event. Default 25.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}