{
  "openapi": "3.0.1",
  "info": {
    "title": "Apify Store Scraper: Honest Ratings, Weak Leaders",
    "description": "Read the Apify Store with honest ratings: listings nobody has reviewed show as unrated, never as badly rated, and a weak leader comes with its reason in plain words. Search, or filter by category, developer and pricing model, for users, runs, success rate and price on every plan.",
    "version": "0.2",
    "x-build-id": "uhR8ry7mc8xCsYMCL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pradio~store-intel/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pradio-store-intel",
        "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/pradio~store-intel/runs": {
      "post": {
        "operationId": "runs-sync-pradio-store-intel",
        "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/pradio~store-intel/run-sync": {
      "post": {
        "operationId": "run-sync-pradio-store-intel",
        "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": {
          "search": {
            "title": "Search term",
            "type": "string",
            "description": "What to search the Store for, e.g. \"instagram\". A listing is kept only when every word of your search (words of three letters or more) appears in its title, name or description, because the Store search on its own also returns popular listings that do not match. Leave it empty to read a whole category, one developer, one pricing model, or the whole Store."
          },
          "category": {
            "title": "Store category",
            "enum": [
              "AI",
              "AGENTS",
              "AUTOMATION",
              "BUSINESS",
              "COVID_19",
              "DEVELOPER_EXAMPLES",
              "DEVELOPER_TOOLS",
              "ECOMMERCE",
              "FOR_CREATORS",
              "GAMES",
              "JOBS",
              "LEAD_GENERATION",
              "MARKETING",
              "NEWS",
              "SEO_TOOLS",
              "SOCIAL_MEDIA",
              "TRAVEL",
              "VIDEOS",
              "REAL_ESTATE",
              "SPORTS",
              "EDUCATION",
              "INTEGRATIONS",
              "OTHER",
              "OPEN_SOURCE",
              "MCP_SERVERS"
            ],
            "type": "string",
            "description": "Only listings the developer filed under this Store category. Leave empty for every category."
          },
          "pricingModel": {
            "title": "Pricing model",
            "enum": [
              "PAY_PER_EVENT",
              "FREE",
              "FLAT_PRICE_PER_MONTH",
              "PRICE_PER_DATASET_ITEM"
            ],
            "type": "string",
            "description": "Only listings that charge this way. Leave empty for every pricing model."
          },
          "developer": {
            "title": "Developer",
            "type": "string",
            "description": "Only listings published by this developer, written as it appears in their Store URLs (apify.com/<developer>/...), e.g. \"apify\". Use it to see a competitor's whole catalogue. Leave empty for every developer."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "popularity",
              "relevance",
              "newest",
              "lastUpdate",
              "totalUsers"
            ],
            "type": "string",
            "description": "The order the Store returns listings in, which is also what rank counts. Most used first by default; \"newest\" shows what launched recently and \"last updated\" what changed recently.",
            "default": "popularity"
          },
          "limit": {
            "title": "Listings to examine",
            "minimum": 1,
            "maximum": 40000,
            "type": "integer",
            "description": "How many Store listings to read before the ones that do not match are dropped. Read in pages of 100. Under the default order the Store puts the most used listings first, not the best matches, so a small listing that matches can sit beyond the first page. Only the listings kept are billed.",
            "default": 100
          },
          "offset": {
            "title": "Start from position",
            "minimum": 0,
            "type": "integer",
            "description": "Skip this many listings first, to continue a long read in the next run or split the Store between runs. Rank still counts from the top, so row ranks carry on from where the last run stopped.",
            "default": 0
          },
          "matchEveryWord": {
            "title": "Keep only listings that contain every word",
            "type": "boolean",
            "description": "On: a listing is kept only when every word of your search is in its title, name or description. Off: every listing the Store returned for the search is kept, including the ones it matched on other text.",
            "default": true
          },
          "minUsers30d": {
            "title": "Minimum users in the last 30 days",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only listings with at least this many users in the last 30 days, to see the listings people actually use. A listing whose user count the Store does not give is set aside too. Leave empty to keep every listing."
          },
          "onlyWeak": {
            "title": "Only weak incumbents",
            "type": "boolean",
            "description": "Return only listings showing a genuine weakness signal: low rating over enough reviews, high failure rate, or UNDER_MAINTENANCE.",
            "default": false
          },
          "minReviewsForRating": {
            "title": "Minimum reviews before a rating counts",
            "minimum": 1,
            "type": "integer",
            "description": "The Store shows a rating of 0 for Actors nobody has reviewed. Below this many reviews the rating is reported as null, not as a low score.",
            "default": 3
          },
          "weakRatingBelow": {
            "title": "Rating below which an incumbent counts as weak",
            "minimum": 1,
            "maximum": 5,
            "type": "number",
            "description": "A rating under this counts as a weakness signal. The default of 4.2 is the 25th percentile of rated listings in a sample of 1,617 listings read on 2026-08-19, so a listing under it is in the bottom quarter. Applied only to listings with enough reviews: see minReviewsForRating.",
            "default": 4.2
          },
          "minRunsForHealth": {
            "title": "Minimum 30-day runs before a failure rate means anything",
            "minimum": 1,
            "type": "integer",
            "description": "Below this many runs in the last 30 days, a listing's failure rate is still shown, but it is too few runs to count as a weakness signal. The default of 100 is a judgement call, not a measured figure.",
            "default": 100
          },
          "weakFailureRateAbove": {
            "title": "30-day failure rate above which an incumbent counts as weak",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "A 30-day failure rate above this counts as a weakness signal. The default of 0.167 was measured on the same sample of 1,617 listings on 2026-08-19. Applied only when the listing has at least minRunsForHealth runs.",
            "default": 0.167
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}