{
  "openapi": "3.0.1",
  "info": {
    "title": "GitHub Repo Scraper – Trending, Search, Releases & Issues API",
    "description": "Get GitHub repository data from the official REST API: trending new repos by stars, search with filters, all repos of a user or org, or details for a list. Stars, forks, topics, license, languages, contributors count, releases and issues/PRs. Works without a token; no emails collected.",
    "version": "0.1",
    "x-build-id": "XmY5ZLIibGfNcl72g"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gazidev~github-repo-data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gazidev-github-repo-data",
        "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/gazidev~github-repo-data/runs": {
      "post": {
        "operationId": "runs-sync-gazidev-github-repo-data",
        "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/gazidev~github-repo-data/run-sync": {
      "post": {
        "operationId": "run-sync-gazidev-github-repo-data",
        "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": {
          "mode": {
            "title": "What to get",
            "enum": [
              "trending",
              "search",
              "owner",
              "repos"
            ],
            "type": "string",
            "description": "**Trending**: repositories created in the last N days, sorted by stars (a 'GitHub trending' style list built with the official search API). **Search**: any GitHub repository search with filters. **Owner**: all public repositories of users or organizations. **Repos**: details for a list of repositories (owner/name or URLs).",
            "default": "trending"
          },
          "trendingDays": {
            "title": "Trending: created in the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Trending mode only. 1 = today's new repos, 7 = this week, 30 = this month.",
            "default": 7
          },
          "searchQuery": {
            "title": "Search keywords / GitHub search syntax",
            "type": "string",
            "description": "Trending and Search modes. Free text (`web scraping`) and any GitHub qualifier (`in:name`, `org:apify`, `license:mit`, `good-first-issues:>5`, `is:public`). Combined with the filters below."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Primary language, e.g. `Python`, `TypeScript`, `Rust`. Several, comma-separated, means all must match, so use one."
          },
          "topic": {
            "title": "Topic",
            "type": "string",
            "description": "Repository topic, e.g. `llm`, `mcp`, `web-scraping`."
          },
          "minStars": {
            "title": "Min stars",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no minimum."
          },
          "maxStars": {
            "title": "Max stars",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no maximum. Useful to find small, fast-growing projects."
          },
          "createdAfter": {
            "title": "Created after",
            "type": "string",
            "description": "Search mode. Absolute (`2026-01-01`) or relative (`30 days`). Trending mode uses 'last N days' instead."
          },
          "createdBefore": {
            "title": "Created before",
            "type": "string",
            "description": "Search mode. Absolute or relative date."
          },
          "pushedAfter": {
            "title": "Last pushed after",
            "type": "string",
            "description": "Only actively maintained repos: last commit pushed on or after this date (`2026-09-01` or `90 days`)."
          },
          "sort": {
            "title": "Sort (Search mode)",
            "enum": [
              "stars",
              "forks",
              "updated",
              "help-wanted-issues",
              "best-match"
            ],
            "type": "string",
            "description": "Trending mode always sorts by stars.",
            "default": "stars"
          },
          "order": {
            "title": "Order",
            "enum": [
              "desc",
              "asc"
            ],
            "type": "string",
            "description": "Descending = most stars / newest first.",
            "default": "desc"
          },
          "maxResults": {
            "title": "Max repositories (Trending / Search)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "GitHub returns at most 1,000 results per search. Split big jobs by date or star ranges.",
            "default": 25
          },
          "owners": {
            "title": "Users or organizations (Owner mode)",
            "type": "array",
            "description": "Logins or profile URLs, e.g. `apify`, `microsoft`, `https://github.com/torvalds`.",
            "items": {
              "type": "string"
            }
          },
          "ownerSort": {
            "title": "Owner mode: order",
            "enum": [
              "stars",
              "pushed",
              "updated",
              "created",
              "full_name"
            ],
            "type": "string",
            "description": "Most stars first uses the search API (1 request per 100 repos, max 1,000 per owner). The others list repos directly.",
            "default": "stars"
          },
          "maxReposPerOwner": {
            "title": "Max repos per owner",
            "minimum": 1,
            "type": "integer",
            "description": "Owner mode only.",
            "default": 100
          },
          "repositories": {
            "title": "Repositories (Repos mode)",
            "type": "array",
            "description": "`owner/name` or GitHub URLs, e.g. `apify/crawlee`, `https://github.com/psf/requests`. One API request per repo (plus the extras below).",
            "items": {
              "type": "string"
            }
          },
          "includeForks": {
            "title": "Include forks",
            "type": "boolean",
            "description": "Search and Owner modes leave forks out by default.",
            "default": false
          },
          "excludeArchived": {
            "title": "Exclude archived repos",
            "type": "boolean",
            "description": "Leave out archived (read-only) repositories in Search and Owner modes.",
            "default": false
          },
          "includeLanguages": {
            "title": "Language breakdown",
            "type": "boolean",
            "description": "Adds `languages` (bytes per language) and `languagePercent`. +1 API request per repo.",
            "default": false
          },
          "includeContributorsCount": {
            "title": "Contributors count",
            "type": "boolean",
            "description": "Adds `contributorsCount` (contributors with a GitHub account). +1 API request per repo. GitHub does not count very large repos (e.g. linux).",
            "default": false
          },
          "fetchFullDetails": {
            "title": "Full repo details (watchers, parent)",
            "type": "boolean",
            "description": "Trending / Search / Owner results already include stars, forks, topics, license and dates. Turn on for real `watchers` and the fork `parentFullName`. +1 API request per repo. Repos mode always fetches details.",
            "default": false
          },
          "includeReleases": {
            "title": "Releases",
            "type": "boolean",
            "description": "Saves the newest releases of each repo as separate rows (`type: release`): tag, date, assets and download counts. Adds `latestRelease` to the repo row. Charged per release row.",
            "default": false
          },
          "maxReleasesPerRepo": {
            "title": "Max releases per repo",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Newest first. One API request per 100 releases.",
            "default": 10
          },
          "includeIssues": {
            "title": "Issues / pull requests",
            "type": "boolean",
            "description": "Saves issues and/or pull requests as separate rows (`type: issue`). Charged per row.",
            "default": false
          },
          "issueType": {
            "title": "Issues or PRs",
            "enum": [
              "both",
              "issues",
              "pulls"
            ],
            "type": "string",
            "description": "GitHub's issues endpoint returns both; picking one filters the list.",
            "default": "both"
          },
          "issueState": {
            "title": "State",
            "enum": [
              "open",
              "closed",
              "all"
            ],
            "type": "string",
            "description": "Open, closed or all.",
            "default": "open"
          },
          "issueLabels": {
            "title": "Labels",
            "type": "string",
            "description": "Comma-separated; all must match, e.g. `bug` or `good first issue`."
          },
          "issuesSince": {
            "title": "Updated since",
            "type": "string",
            "description": "Only issues/PRs updated on or after this date (`2026-09-01` or `7 days`)."
          },
          "issueSort": {
            "title": "Issue order",
            "enum": [
              "created",
              "updated",
              "comments"
            ],
            "type": "string",
            "description": "Newest first by this field.",
            "default": "created"
          },
          "maxIssuesPerRepo": {
            "title": "Max issues/PRs per repo",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Newest first (see 'Issue order'). One API request per 100 rows.",
            "default": 30
          },
          "includeBodies": {
            "title": "Include release notes / issue text",
            "type": "boolean",
            "description": "Adds `body` (Markdown) to release and issue rows. Email addresses in the text are removed.",
            "default": false
          },
          "maxBodyChars": {
            "title": "Max body length (characters)",
            "minimum": 0,
            "type": "integer",
            "description": "Longer texts are cut. 0 = no limit.",
            "default": 3000
          },
          "githubToken": {
            "title": "GitHub token (optional)",
            "type": "string",
            "description": "Optional personal access token (classic with no scopes, or fine-grained with public read access). Without a token GitHub allows 60 requests/hour and 10 searches/minute per IP, which is enough for the default run and small jobs. With a token: 5,000 requests/hour and 30 searches/minute. Stored encrypted; used only for api.github.com."
          },
          "maxWaitForRateLimitSecs": {
            "title": "Max wait for rate limit (seconds)",
            "minimum": 0,
            "maximum": 3600,
            "type": "integer",
            "description": "If the limit resets within this time (the search limit resets every minute), the Actor waits and continues. Otherwise it stops cleanly, keeps everything already saved and reports the reset time.",
            "default": 90
          },
          "useConditionalRequests": {
            "title": "Conditional requests (ETag cache)",
            "type": "boolean",
            "description": "For scheduled runs with a token: remembers ETags in a named key-value store and sends If-None-Match. Unchanged data comes back as HTTP 304, which GitHub does not count against the token's limit. Adds key-value store operations, so leave off for one-off runs.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Repos in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "GitHub asks API clients to avoid many concurrent requests. 4 is a safe default.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}