{
  "openapi": "3.0.1",
  "info": {
    "title": "Tech Adoption Tracker — GitHub Stars & npm Downloads",
    "description": "Track developer adoption of any repo, package or app: GitHub stars, forks, contributors and releases, npm and PyPI download trends, App Store, Google Play and Chrome ratings. One typed row per entity with the change since your last run. Dataset-only, MCP-ready.",
    "version": "0.1",
    "x-build-id": "ZDbbf8echCkBxFuHR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~tech-adoption-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-tech-adoption-tracker",
        "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/inovaflow~tech-adoption-tracker/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-tech-adoption-tracker",
        "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/inovaflow~tech-adoption-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-tech-adoption-tracker",
        "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": {
          "githubRepos": {
            "title": "GitHub repositories",
            "type": "array",
            "description": "`owner/repo` or a GitHub URL, one per line — `vercel/next.js`, `https://github.com/langchain-ai/langchain`. Returns stars, forks, watchers, open issues, contributors and the latest release.",
            "items": {
              "type": "string"
            }
          },
          "npmPackages": {
            "title": "npm packages",
            "type": "array",
            "description": "Package names or npmjs.com URLs, one per line — `react`, `@modelcontextprotocol/sdk`. Returns downloads for the last day, week, previous week and 30 days, plus the latest version and its publish date.",
            "items": {
              "type": "string"
            }
          },
          "pypiPackages": {
            "title": "PyPI packages",
            "type": "array",
            "description": "Project names or pypi.org URLs, one per line — `requests`, `fastapi`. Returns downloads for the last day, week, previous week and 30 days (mirrors excluded), the version count and the latest release.",
            "items": {
              "type": "string"
            }
          },
          "githubOrgs": {
            "title": "GitHub organizations",
            "type": "array",
            "description": "Track a whole company's open source at once — organization logins or URLs, one per line (`vercel`, `https://github.com/supabase`). Each expands to its most-starred public repos (see the per-organization limit below).",
            "items": {
              "type": "string"
            }
          },
          "entities": {
            "title": "Anything else (mixed list)",
            "type": "array",
            "description": "Mix any identifiers in one list and the Actor works out the platform: repo, npm, PyPI, App Store, Google Play or Chrome Web Store URLs, or prefixed ids like `npm:zod`, `pypi:pydantic`, `github:owner/repo`, `org:stripe`, `apple:310633997`, `play:com.whatsapp`, `chrome:<extension id>`.",
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Discover by topic",
            "type": "array",
            "description": "GitHub topics and npm keywords, one per line — `mcp`, `vector-database`, `llm`. Matches the tags maintainers put on their own projects.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Discover by keyword",
            "type": "array",
            "description": "Free-text searches, one per line — `ai agent framework`, `feature flags`. Matched against GitHub repo names, descriptions and topics, and npm package text.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Programming language (GitHub discovery)",
            "type": "string",
            "description": "Only discover GitHub repos written in this language — `TypeScript`, `Python`, `Go`, `Rust`."
          },
          "minStars": {
            "title": "Minimum stars (GitHub discovery)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip discovered repos below this star count, to leave out toy projects.",
            "default": 0
          },
          "maxPerDiscovery": {
            "title": "Results per topic or keyword",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many repos and packages each topic or keyword adds, most-adopted first.",
            "default": 10
          },
          "maxReposPerOrg": {
            "title": "Repos per organization",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many of each organization's most-starred public repos to track (forks and archived repos left out).",
            "default": 10
          },
          "appStoreApps": {
            "title": "Apple App Store apps",
            "type": "array",
            "description": "App Store URLs, numeric app ids (`310633997`) or bundle ids, one per line. Returns the rating and rating count (overall and for the current version), the US top-100 chart position overall and in the app's category, and the latest version with its release notes.",
            "items": {
              "type": "string"
            }
          },
          "googlePlayApps": {
            "title": "Google Play apps",
            "type": "array",
            "description": "Google Play URLs or package ids (`com.whatsapp`), one per line. Returns the rating, rating count, install bucket (lower bound, e.g. 10B+ → 10000000000) and last update date.",
            "items": {
              "type": "string"
            }
          },
          "chromeExtensions": {
            "title": "Chrome Web Store extensions",
            "type": "array",
            "description": "Chrome Web Store URLs or 32-letter extension ids, one per line. Returns users, rating, rating count, version and last update date.",
            "items": {
              "type": "string"
            }
          },
          "watchId": {
            "title": "Watch name (trend memory)",
            "type": "string",
            "description": "Runs with the same watch name compare against each other. Leave empty and the Actor derives one from what you track, so a scheduled run with the same input keeps its history automatically. Name it when several schedules share one list, or to start a fresh baseline."
          },
          "maxEntities": {
            "title": "Maximum rows per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper bound on entities observed and charged in one run — the listed ones first, then organization repos, then discoveries.",
            "default": 100
          },
          "sources": {
            "title": "Platforms to read",
            "uniqueItems": true,
            "type": "array",
            "description": "Leave empty for GitHub, npm and PyPI — plus the app stores whenever you list an app. Pick platforms here to restrict a mixed list or the discovery to them.",
            "items": {
              "type": "string",
              "enum": [
                "github",
                "npm",
                "pypi",
                "appstore"
              ],
              "enumTitles": [
                "GitHub",
                "npm",
                "PyPI",
                "App stores (Apple, Google Play, Chrome)"
              ]
            }
          },
          "includeContributors": {
            "title": "Count GitHub contributors",
            "type": "boolean",
            "description": "One extra GitHub request per repo. Very large monorepos report no count (GitHub refuses to list them) and return null.",
            "default": true
          },
          "includeReleases": {
            "title": "Read the latest GitHub release",
            "type": "boolean",
            "description": "Version, date and the maintainers' own release notes (trimmed) of each repo's latest release. One extra GitHub request per repo.",
            "default": true
          },
          "resolveCompanyDomains": {
            "title": "Resolve the owning company's domain",
            "type": "boolean",
            "description": "Read the website of the GitHub organization behind each repo or package, so each row carries the company domain for joining to your CRM. One GitHub request per distinct organization.",
            "default": true
          },
          "githubToken": {
            "title": "GitHub token (optional)",
            "type": "string",
            "description": "Not needed — the Actor works without one. A personal access token with no scopes raises GitHub's limit from 60 to 5,000 requests an hour, for lists of hundreds of repos. Stored encrypted, used only for api.github.com."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Entities read at the same time.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}