{
  "openapi": "3.0.1",
  "info": {
    "title": "GitHub Scraper - Repos, Stars, Forks and Users",
    "description": "Search GitHub for repositories and users with the query you would type into GitHub's search box, or paste a list of usernames or repos. Repository rows give stars, forks, issues, language, topics, licence and dates; user rows give name, bio, company, location and followers. $0.90 per 1,000 rows.",
    "version": "0.1",
    "x-build-id": "Csa114cidizNxI0SO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~github-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-github-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/dami_studio~github-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-github-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/dami_studio~github-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-github-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": {
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "GitHub search syntax. For repositories: \"language:python stars:>1000 machine learning\", \"topic:cli created:>2023-01-01\". For users: \"location:berlin followers:>500\", \"fullstack in:bio\". See GitHub's search docs for all qualifiers. Not run when you fill in Several searches, Usernames or Repositories below."
          },
          "queries": {
            "title": "Several searches (optional)",
            "maxItems": 10,
            "type": "array",
            "description": "Up to 10 searches in one run, one per line, each up to Max items. A result found by two of them is written and charged once, with searchQuery saying which search found it first. When this list has entries, Search query above is not run, so put every search here.",
            "items": {
              "type": "string"
            }
          },
          "usernames": {
            "title": "Usernames or profile links (optional)",
            "maxItems": 1000,
            "type": "array",
            "description": "Up to 1,000 GitHub usernames or profile links, one per line, for people or organisations you already know. Each comes back as a user row and costs the same as one. A name GitHub doesn't know gets a free NOT_FOUND row. When this list or Repositories has entries, no search runs. Past about 60 names you need a GitHub token (below).",
            "items": {
              "type": "string"
            }
          },
          "repositories": {
            "title": "Repositories (optional)",
            "maxItems": 1000,
            "type": "array",
            "description": "Up to 1,000 repositories as owner/repo or links, one per line. Each comes back as a repository row and costs the same as one. A repository GitHub doesn't know gets a free NOT_FOUND row. When this list or Usernames has entries, no search runs. Past about 60 repositories you need a GitHub token (below).",
            "items": {
              "type": "string"
            }
          },
          "type": {
            "title": "Search type",
            "enum": [
              "repositories",
              "users"
            ],
            "type": "string",
            "description": "What to search for: repositories or users/organizations. Users are additionally enriched with profile details (name, bio, company, location, followers, public repos).",
            "default": "repositories"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "stars",
              "forks",
              "updated",
              "help-wanted-issues",
              "best-match",
              "followers",
              "repositories",
              "joined"
            ],
            "type": "string",
            "description": "Stars, forks, recently updated and help-wanted issues sort a repository search. Followers, repositories and join date sort a user search. A choice that doesn't fit the search type gets GitHub's best match, which is also what Best match means.",
            "default": "stars"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional. Only repositories in this language, or users who write it, such as Python or Rust. Added to the search as language:. Leave Search query empty and the shortcuts here become the search on their own."
          },
          "minStars": {
            "title": "Minimum stars",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Only repositories with at least this many stars. Added to the search as stars:>=. Repository searches only."
          },
          "topics": {
            "title": "Topics",
            "type": "array",
            "description": "Optional. Only repositories tagged with every one of these topics, such as llm or cli. Added to the search as topic:. GitHub can't match either-of for topics, so each one narrows the search further. Repository searches only.",
            "items": {
              "type": "string"
            }
          },
          "includeReadme": {
            "title": "Include README text",
            "type": "boolean",
            "description": "Adds each repository's README as plain text, up to 20,000 characters (readmeTruncated says when it was cut). It takes one more request per repository but costs nothing extra: the row is still one result. Past about 60 repositories you need a GitHub token (below). Repository rows only.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of repositories/users to return for each search. GitHub's Search API caps at 1000 results per query (10 pages of 100), so split large jobs by qualifier (e.g. star range or date range). Usernames and Repositories are all read, whatever this says.",
            "default": 100
          },
          "notionConnector": {
            "title": "Notion connector (optional)",
            "type": "string",
            "description": "Optional. Write each item as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless."
          },
          "notionParentId": {
            "title": "Notion target data source ID",
            "type": "string",
            "description": "Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead."
          },
          "githubToken": {
            "title": "GitHub token (recommended)",
            "type": "string",
            "description": "Optional GitHub personal access token. Strongly recommended: without it you get only 60 requests/hr and 10 searches/min; with it you get 5000 requests/hr and 30 searches/min, so larger jobs finish. No special scopes needed for public data. Kept private."
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Optional proxy for the GitHub API calls. The GitHub API is a public endpoint, so a proxy is usually unnecessary."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}