{
  "openapi": "3.0.1",
  "info": {
    "title": "Journalist Requests Scraper",
    "description": "Scrape current SourceBottle call-outs and public journalist requests from Bluesky and Mastodon. Get titles, request text, outlet, requester role, country, deadlines and social author details. Social results can be filtered by hashtag, keyword or age.",
    "version": "0.1",
    "x-build-id": "AOSvENq2vsW2ft4df"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~journalist-requests-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-journalist-requests-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/axiomworks~journalist-requests-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-journalist-requests-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/axiomworks~journalist-requests-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-journalist-requests-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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Networks to read: 'sourcebottle' (call-outs by industry), 'bluesky' and 'mastodon' (hashtag search). Default: all three. Ignored when startUrls is set.",
            "items": {
              "type": "string",
              "enum": [
                "sourcebottle",
                "bluesky",
                "mastodon"
              ]
            },
            "default": [
              "sourcebottle",
              "bluesky",
              "mastodon"
            ]
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtags without '#' searched on Bluesky and Mastodon, case-insensitive, e.g. 'journorequest', 'prrequest', 'mediarequest'. Each is searched separately and posts are returned once. Default: journorequest, prrequest, mediarequest.",
            "default": [
              "journorequest",
              "prrequest",
              "mediarequest"
            ],
            "items": {
              "type": "string"
            }
          },
          "sourceBottleCategories": {
            "title": "SourceBottle categories",
            "type": "array",
            "description": "SourceBottle industries to read, as names (e.g. 'General', 'Technology', 'Property', 'Health & Wellbeing') or numeric iids. An unknown name is skipped with a warning. Leave empty for all 12 industries.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Replaces sources, hashtags and categories. Accepts SourceBottle category pages (industry-list-results.asp?iid=N), call-out pages (query.asp?qid=N), Bluesky hashtag pages (bsky.app/hashtag/tag) and mastodon.social tag pages (mastodon.social/tags/tag). Other URLs are skipped with a warning.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only call-outs whose title or text contains any of these words (case-insensitive), e.g. 'startup', 'nurse'. For SourceBottle the match uses the listing title and summary. Leave empty to keep everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxAgeDays": {
            "title": "Maximum age in days",
            "minimum": 1,
            "maximum": 36500,
            "type": "integer",
            "description": "Drop Bluesky and Mastodon posts older than this many days, 1-36500, default 30. SourceBottle shows only its current call-outs, so this does not apply to it.",
            "default": 30
          },
          "onlyOpen": {
            "title": "Only open SourceBottle call-outs",
            "type": "boolean",
            "description": "Drop SourceBottle call-outs whose deadline date is before today (UTC). Call-outs without a parseable deadline are kept. Default false.",
            "default": false
          },
          "includeDetails": {
            "title": "Include SourceBottle details",
            "type": "boolean",
            "description": "Open each SourceBottle call-out page (about 1 request per second) to add country, details, verifiedMedia, needsLocal and the full deadline. If false, those fields are null and runs are faster. Default true.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new call-outs",
            "type": "boolean",
            "description": "Remember returned ids in the named key-value store 'journalist-requests-seen' and skip them on later runs. Use it for scheduled runs. Default false.",
            "default": false
          },
          "enrichWithAI": {
            "title": "Add AI topic and deadline",
            "type": "boolean",
            "description": "Adds topicCategory (a SourceBottle-style category, or 'not a media request') and, for social posts, deadlineFromText, using a third-party AI processor. Each enriched result is billed as a separate event. Default false.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of call-outs returned in total across all sources, 1-10000, default 50. The newest are kept. You are charged only for results returned.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy for requests. Default: no proxy. Enable Apify Proxy only if SourceBottle blocks the run.",
            "default": {
              "useApifyProxy": false
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Skip requests whose title, text or details contain any of these phrases, case-insensitive. Applied before charging; leave empty to exclude nothing. Example: gift guide.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keep a separate onlyNew history for this named feed, e.g. finance-pr. Used only with onlyNew=true. Empty preserves the existing shared history; use different names for independent schedules.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}