{
  "openapi": "3.0.1",
  "info": {
    "title": "Trade Press Scraper: APAC Advertising & Marketing News",
    "description": "Scrape Marketing-Interactive articles by date range and Boolean query. Get headline, date, author, tags, video and outbound links as JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "zBCquRmtDu3rNwfDx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lexac94~trade-press-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lexac94-trade-press-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/lexac94~trade-press-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lexac94-trade-press-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/lexac94~trade-press-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lexac94-trade-press-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": {
          "sites": {
            "title": "Publications",
            "type": "array",
            "description": "Trade publications to collect from. Marketing-Interactive covers Singapore, Malaysia, Hong Kong, Indonesia, the Philippines, Thailand, Australia and APAC-wide news. Campaign Brief Asia covers campaigns and agency news across Asia and the Middle East, and about half its articles list campaign credits (client, agency, production house, media), returned as separate columns.",
            "items": {
              "type": "string",
              "enum": [
                "marketing-interactive",
                "campaign-brief-asia"
              ],
              "enumTitles": [
                "Marketing-Interactive (marketing-interactive.com)",
                "Campaign Brief Asia (campaignbriefasia.com)"
              ]
            },
            "default": [
              "marketing-interactive",
              "campaign-brief-asia"
            ]
          },
          "dateFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Earliest publication date to include (Singapore time). Pick a date, or a relative range such as \"7 days\", \"6 months\" or \"2 years\" back from today. Default: the last 7 days.",
            "default": "7 days"
          },
          "dateTo": {
            "title": "Published to",
            "type": "string",
            "description": "Latest publication date to include, inclusive (Singapore time). Leave empty for today."
          },
          "query": {
            "title": "Boolean query",
            "type": "string",
            "description": "Combine terms with AND, OR, NOT (uppercase) and brackets. Words match whole words in any case. Use \"quotes\" for exact phrases and * as a wildcard (appoint* matches appoints, appointed, appointment). For case-sensitive acronyms use a regular expression between slashes, e.g. /\\bMOM\\b/. Example: (Grab OR Gojek) AND (campaign* OR agency OR pitch*)"
          },
          "queryScope": {
            "title": "Match the query against",
            "enum": [
              "headline_tags",
              "full_text"
            ],
            "type": "string",
            "description": "Headline and tags is fast and cheap: articles are checked before they are downloaded, so only matches are fetched. (Campaign Brief Asia has no tags, so there it checks the headline.) Full article text downloads every article in the date range and checks the headline, tags, summary and body, including any credits block. Use it when the names you need appear only in the body, such as a production house or director.",
            "default": "headline_tags"
          },
          "includeFullText": {
            "title": "Include article text",
            "type": "boolean",
            "description": "Off: each row has the headline, date, author, section, tags, summary, campaign credits (where published), word count, and the video, social and outbound links in the article. On: rows also include the full article text. Article text belongs to its publisher; use it for your own research and analysis, and don't republish it.",
            "default": false
          },
          "maxItems": {
            "title": "Max articles",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many articles, newest first. 0 means no limit. Set a small number for a first test.",
            "default": 0
          },
          "articleUrls": {
            "title": "Article URLs",
            "type": "array",
            "description": "Full URLs of articles on a supported publication, one per line.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxRequestsPerMinute": {
            "title": "Max pages per minute",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "How fast pages are fetched. The default of 20 per minute is gentle on the publication and avoids rate limits; at 20 per minute, 1,000 articles take about 50 minutes. The maximum is 60. If the run's status message mentions throttle pauses, lower it.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify's datacenter proxy works for both publications. If a run fails with error rows mentioning Cloudflare, switch to the RESIDENTIAL proxy group.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}