{
  "openapi": "3.0.1",
  "info": {
    "title": "Simply Wall St Stock Analysis Scraper",
    "description": "Fundamental stock analysis from Simply Wall St: Snowflake score, valuation ratios (PE/PB/PEG/ROE/ROA), dividend data, ~30 fundamental checks and peer comparison. Look up exact stock URLs or screen ~177,700 companies by market cap and exchange.",
    "version": "0.1",
    "x-build-id": "ofn0hwbL3fKep8H1n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~simplywallst-stocks-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-simplywallst-stocks-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/scrapyx~simplywallst-stocks-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-simplywallst-stocks-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/scrapyx~simplywallst-stocks-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-simplywallst-stocks-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": {
          "stockUrls": {
            "title": "Stock URLs",
            "type": "array",
            "description": "Exact simplywall.st company page URLs, e.g. 'https://simplywall.st/stocks/us/tech/nasdaq-aapl/apple'. Copy these from simplywall.st itself or from 'canonicalUrl' in a previous run's output — the last URL segment is NOT cosmetic on this site (unlike some other actors in this portfolio): a wrong slug answers a genuine 404, it does not silently resolve to the right company. Each URL always gets the full fundamentals pass (Snowflake score, valuation ratios, financial checks).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "screenerQueries": {
            "title": "Screener queries",
            "type": "array",
            "description": "Discover companies by market cap and/or exchange instead of (or as well as) pasting URLs. Each item: {\"marketCapMinMillion\": 100000, \"marketCapMaxMillion\": null, \"exchangeSymbol\": \"NasdaqGS\"}. All three fields are optional — an empty object screens the whole ~177,700-company universe, bounded by 'Max stocks per query'. marketCap is in MILLIONS of the LISTING currency (not always USD). exchangeSymbol is an exact, case-sensitive string as Simply Wall St spells it (examples: NasdaqGS, NasdaqGM, NYSE, LSE, TSE, ASX, SEHK) — there is no lookup endpoint to validate against, but an unknown value is honest (0 results), it does not silently return the wrong companies.",
            "default": []
          },
          "includeFullAnalysis": {
            "title": "Fetch full fundamentals for screener results",
            "type": "boolean",
            "description": "For companies found via 'Screener queries', also fetch the full analysis page (Snowflake score, valuation ratios, financial statement checks, peer comparison) — one extra request per company on a restricted TLS pool, each page 1-2 MB. Turn off for a fast identity-only list (name, ticker, exchange, canonical URL). Stock URLs you paste directly always get the full pass regardless of this setting.",
            "default": true
          },
          "includeFundamentalChecks": {
            "title": "Include the fundamental-checks list",
            "type": "boolean",
            "description": "Simply Wall St runs ~30 individual pass/fail checks per company (experienced management, seasoned board, dividend coverage, debt levels, and more), each with a plain-English explanation — this is fetched as part of the same page as everything else (no extra request), but it is the single largest field per row. Turn off to drop it from the output and keep rows smaller; the Snowflake score totals and valuation ratios are unaffected either way.",
            "default": true
          },
          "maxItemsPerQuery": {
            "title": "Max stocks per screener query",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each screener query after this many companies. Simply Wall St's screener shares one Elasticsearch-style result window across the WHOLE ~177,700-company index: offset+size cannot exceed 10,000, regardless of how narrow your own filter's total is (verified by bisection). A broad, unfiltered query can therefore never be crawled to completion — the summary row reports 'resultWindowCapped' and 'reachableWithCurrentWindow' when that happens. Set to 0 to fetch as many as the window allows.",
            "default": 20
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many requests may be in flight at once. This absorbs latency variance; it is NOT the throttle — the crawl rate is set by 'Minimum interval between requests' below.",
            "default": 4
          },
          "minRequestInterval": {
            "title": "Minimum interval between requests (seconds)",
            "minimum": 0.1,
            "maximum": 10,
            "type": "number",
            "description": "The actual speed control: the shortest gap between two requests, across all workers. Detail pages are 1-2 MB each on a TLS pool that is clean but narrow (4 of 8 profiles ladder past both surfaces), so this actor paces more cautiously than a pure-JSON-API one by default.",
            "default": 0.4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential with no country pin is the cloud default. Neither surface's data depends on the exit IP's geography (the screener filters and each company's canonical URL do all the scoping), so a wide, unpinned pool is kept for recovering a block rather than narrowed to a region.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}