{
  "openapi": "3.0.1",
  "info": {
    "title": "Mastodon Scraper",
    "description": "Collect public posts and profiles from Mastodon and compatible servers. Get text, authors, engagement counts, media links, and instance details in a dataset for research and social listening.",
    "version": "0.0",
    "x-build-id": "3rEEhZdeovVeFXy7i"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maximedupre~mastodon-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maximedupre-mastodon-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/maximedupre~mastodon-scraper/runs": {
      "post": {
        "operationId": "runs-sync-maximedupre-mastodon-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/maximedupre~mastodon-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-maximedupre-mastodon-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",
        "required": [
          "instanceUrl",
          "resultType"
        ],
        "properties": {
          "instanceUrl": {
            "title": "Mastodon instance URL",
            "pattern": "^https?://[^/\\s?#]+/?$",
            "type": "string",
            "description": "Enter the full instance URL, such as https://mastodon.social. This instance is used for searches and feeds. Public post features also work on Pleroma, Akkoma, and other Mastodon-compatible servers where available."
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many output rows across all submitted values. Leave blank or use 0 for all available results. A positive number returns that many rows, or fewer if no more results are available."
          },
          "resultType": {
            "title": "Result type",
            "enum": [
              "posts",
              "profiles"
            ],
            "type": "string",
            "description": "Posts returns public posts. Profiles finds public accounts that match Keywords. Fields for the other result type are ignored."
          },
          "postMethod": {
            "title": "Find posts by",
            "enum": [
              "accounts",
              "hashtags",
              "search",
              "timeline",
              "trending"
            ],
            "type": "string",
            "description": "Choose one way to find posts. Fill in Accounts, Hashtags, or Keywords for that choice. Public timeline and Trending posts need no search values. Inactive search values are ignored. Keyword search, public timelines, and trending posts depend on what the instance makes public.",
            "default": "hashtags"
          },
          "accounts": {
            "title": "Account feeds: Accounts",
            "minItems": 1,
            "type": "array",
            "description": "Enter one account per item. Use a bare username on the chosen instance, a full user@host handle, or a full profile URL such as https://mastodon.social/@Mastodon. Each item names one account whose public posts you want.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtag feeds: Hashtags",
            "minItems": 1,
            "type": "array",
            "description": "Enter one hashtag per item, such as science or #science. Returns posts in the chosen instance's available feed for each tag.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "type": "array",
            "description": "Used for Profiles and for Posts with Keyword search. Enter one search word or phrase per item. Each item is a separate search, so keep a whole phrase in one item. Required for these choices; ignored for other post choices.",
            "items": {
              "type": "string"
            }
          },
          "includeReplies": {
            "title": "Include reply posts",
            "type": "boolean",
            "description": "For Posts with Account feeds or Hashtag feeds. Turn off to leave out replies. Ignored for other choices.",
            "default": true
          },
          "includeBoosts": {
            "title": "Include boosted posts",
            "type": "boolean",
            "description": "For Posts with Account feeds or Hashtag feeds. Turn off to leave out boosts. Ignored for other choices.",
            "default": true
          },
          "onlyMedia": {
            "title": "Only posts with images or videos",
            "type": "boolean",
            "description": "For Posts with Account feeds or Public timeline. Turn on to return only posts with images or videos. Ignored for other choices.",
            "default": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}