{
  "name": "GitHub Topics Repositories API",
  "description": "Public GitHub repositories listed under a topic, with name, owner, description, stars, forks and language.",
  "api_id": "generated_047a8ebb25911ccf62f4a212",
  "slug": "github-topics-repositories-api",
  "source": {
    "name": "GitHub",
    "domain": "github.com",
    "url": "https://github.com/"
  },
  "category": "public_data",
  "countries": [],
  "languages": [
    "en"
  ],
  "record_types": [],
  "tags": [],
  "limitations": [
    "Stars, forks and language come from each repository page, so they appear only on enriched records.",
    "Stars and forks are returned as text, such as \"12\", not as numbers."
  ],
  "updated": "2026-10-26",
  "note": "Sample records are saved samples, not a live run. CleanedWeb is not affiliated with the source.",
  "endpoints": [
    {
      "endpoint_id": "generated_047a8ebb25911ccf62f4a212_search",
      "name": "Extract records",
      "description": "Return records within the accepted scope.",
      "definition_version": "ccb220b4bbd6870eb03e3509eb1f13351075b8dc273d35584b5d2aca6f935789",
      "method": "POST",
      "path": "/v1/catalog/public/apis/generated_047a8ebb25911ccf62f4a212/endpoints/generated_047a8ebb25911ccf62f4a212_search/run",
      "url": "https://broker.cleanedweb.com/v1/catalog/public/apis/generated_047a8ebb25911ccf62f4a212/endpoints/generated_047a8ebb25911ccf62f4a212_search/run",
      "authentication": {
        "type": "bearer",
        "scheme": "Authorization: Bearer <API key>",
        "scope": "run",
        "note": "Reading this file and the live catalog needs no credential. A run needs a CleanedWeb account and uses the credits of its workspace.",
        "docs": "https://cleanedweb.com/docs/run-catalog-api/"
      },
      "required_headers": [
        {
          "name": "Authorization",
          "value": "Bearer YOUR_API_KEY",
          "description": "An API key with the run scope."
        },
        {
          "name": "Idempotency-Key",
          "value": "UNIQUE_REQUEST_ID",
          "description": "Required. Save it before you send; reuse it only to retry the same request and to read the result. 1-200 characters: letters, numbers, . _ : -"
        },
        {
          "name": "Content-Type",
          "value": "application/json",
          "description": "The body is JSON."
        }
      ],
      "request_body": {
        "input": "An object that follows input_schema.",
        "max_items": "Optional. Stop after this many records.",
        "timeout_seconds": "Optional, 60-86400, default 10800.",
        "wait_seconds": "Optional, 0-86400, default 90. How long the request waits before answering 202."
      },
      "input_schema": {
        "type": "object",
        "properties": {
          "enrich_records": {
            "type": "boolean",
            "default": true,
            "description": "true: read each returned record's product/detail page and merge its fields into the record. false: return list/search-level fields only, with no detail page reads. Every returned record's detail page is read within the run's time budget; records the time budget leaves unread are returned without detail fields, and summary.record_enrichment reports how many records were enriched and why any were not (run_time_budget). Detail fields are optional."
          },
          "continuation": {
            "type": "string",
            "minLength": 32,
            "maxLength": 128,
            "description": "Resume an unfinished collection with the continuation returned by the previous call."
          },
          "read_on": {
            "type": "boolean",
            "default": false,
            "description": "With a continuation from a call that reached its max_pages or max_records, read on past that total; the limits given with this call then count from here. Limits are otherwise totals across continuation calls."
          },
          "topics": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "examples": [
              "web-scraping",
              "python-web-scraper",
              "web-scraping-python",
              "python",
              "crawler",
              "scraping",
              "python-web-crawler",
              "webscraping",
              "python-projects",
              "github-python",
              "web-scraping-api",
              "scraper-python",
              "json-database-python",
              "python-crawler",
              "data-science",
              "web-crawler",
              "scrapy",
              "python-3",
              "web-crawling",
              "python3",
              "scraper",
              "pandas",
              "requests-module",
              "data-mining",
              "web-scraper",
              "beautifulsoup",
              "scraping-websites",
              "datamining",
              "scraping-api",
              "scraping-tool",
              "scraping-data",
              "email-scraper",
              "google-trends-api",
              "scraper-api",
              "google-search-scraper",
              "google-sheets-web-scraping",
              "web-scraping-google-sheets",
              "amazon-scraper-python",
              "anti-bot-page",
              "anti-bot",
              "python-spider",
              "web-spider",
              "python-scraper",
              "tls-client",
              "cloudflare-bypass",
              "scraping-python",
              "python-web-scraping",
              "crawling-python",
              "anti-bot-detection",
              "cf-clearance",
              "cloudflare-scraper",
              "python-tls-client",
              "bioinformatics",
              "database",
              "analysis",
              "health",
              "plants",
              "cannabis",
              "biological-data-analysis",
              "biological-data",
              "terpenes",
              "cannabis-strains",
              "aromatherapy",
              "terpene-profile",
              "fastapi",
              "imagemagick",
              "computer-vision",
              "lda",
              "cvpr2019",
              "amazon",
              "tkinter",
              "flipkart",
              "ecommerce-sites-amazon",
              "corresponding-prices",
              "crawling",
              "python-package",
              "youtube",
              "social-media",
              "csv",
              "youtube-downloader",
              "lxml",
              "youtube-crawler",
              "comment-parser",
              "youtube-scraper",
              "data-mining-python",
              "requests-library-python",
              "python-script",
              "regular-expression",
              "data-visualization",
              "data-analysis",
              "matplotlib",
              "web-mining",
              "urllib",
              "python-developer",
              "os-module",
              "cli-tool",
              "zoominfo-client",
              "leadgen",
              "leadgeneration",
              "web-harvesting",
              "learning",
              "spider",
              "hacktoberfest",
              "hacktoberfest-accepted",
              "frequency-lists",
              "word-frequency",
              "data",
              "machine-learning",
              "mongodb",
              "nosql",
              "pymongo",
              "artificial-intelligence",
              "scrapping",
              "olx",
              "nosql-mongodb",
              "downloader",
              "recursive",
              "file-download",
              "pdf-extractor",
              "price-scraper",
              "price-scraping",
              "scraping-web",
              "alibaba-scraper",
              "dynamic-website",
              "nstl",
              "dynamic-web-crawler",
              "pdf",
              "parser",
              "pdf-converter",
              "html-to-pdf",
              "html-to-pdf-converter"
            ],
            "x-verified-values": [
              "web-scraping",
              "python-web-scraper",
              "web-scraping-python",
              "python",
              "crawler",
              "scraping",
              "python-web-crawler",
              "webscraping",
              "python-projects",
              "github-python",
              "web-scraping-api",
              "scraper-python",
              "json-database-python",
              "python-crawler",
              "data-science",
              "web-crawler",
              "scrapy",
              "python-3",
              "web-crawling",
              "python3",
              "scraper",
              "pandas",
              "requests-module",
              "data-mining",
              "web-scraper",
              "beautifulsoup",
              "scraping-websites",
              "datamining",
              "scraping-api",
              "scraping-tool",
              "scraping-data",
              "email-scraper",
              "google-trends-api",
              "scraper-api",
              "google-search-scraper",
              "google-sheets-web-scraping",
              "web-scraping-google-sheets",
              "amazon-scraper-python",
              "anti-bot-page",
              "anti-bot",
              "python-spider",
              "web-spider",
              "python-scraper",
              "tls-client",
              "cloudflare-bypass",
              "scraping-python",
              "python-web-scraping",
              "crawling-python",
              "anti-bot-detection",
              "cf-clearance",
              "cloudflare-scraper",
              "python-tls-client",
              "bioinformatics",
              "database",
              "analysis",
              "health",
              "plants",
              "cannabis",
              "biological-data-analysis",
              "biological-data",
              "terpenes",
              "cannabis-strains",
              "aromatherapy",
              "terpene-profile",
              "fastapi",
              "imagemagick",
              "computer-vision",
              "lda",
              "cvpr2019",
              "amazon",
              "tkinter",
              "flipkart",
              "ecommerce-sites-amazon",
              "corresponding-prices",
              "crawling",
              "python-package",
              "youtube",
              "social-media",
              "csv",
              "youtube-downloader",
              "lxml",
              "youtube-crawler",
              "comment-parser",
              "youtube-scraper",
              "data-mining-python",
              "requests-library-python",
              "python-script",
              "regular-expression",
              "data-visualization",
              "data-analysis",
              "matplotlib",
              "web-mining",
              "urllib",
              "python-developer",
              "os-module",
              "cli-tool",
              "zoominfo-client",
              "leadgen",
              "leadgeneration",
              "web-harvesting",
              "learning",
              "spider",
              "hacktoberfest",
              "hacktoberfest-accepted",
              "frequency-lists",
              "word-frequency",
              "data",
              "machine-learning",
              "mongodb",
              "nosql",
              "pymongo",
              "artificial-intelligence",
              "scrapping",
              "olx",
              "nosql-mongodb",
              "downloader",
              "recursive",
              "file-download",
              "pdf-extractor",
              "price-scraper",
              "price-scraping",
              "scraping-web",
              "alibaba-scraper",
              "dynamic-website",
              "nstl",
              "dynamic-web-crawler",
              "pdf",
              "parser",
              "pdf-converter",
              "html-to-pdf",
              "html-to-pdf-converter"
            ],
            "description": "Optional. Reads the site's own listing for this topics value instead of the pasted one (any value through the listing's proven URL template); its pages are read and revalidated like the collection, and every record holds the value. Omit to read the pasted listing."
          },
          "programming_language": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "examples": [
              "Python",
              "HTML"
            ],
            "x-verified-values": [
              "Python",
              "HTML"
            ],
            "description": "Optional. Records whose programming language is this value, read from the site's own listing for it (linked from the records); its pages are read and revalidated like the collection. Omit to read the whole collection."
          }
        },
        "required": [],
        "additionalProperties": false,
        "allOf": [
          {
            "not": {
              "required": [
                "programming_language",
                "topics"
              ]
            }
          }
        ]
      },
      "output_schema": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "title",
          "url"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "programming_language": {
            "type": "string"
          },
          "related_title": {
            "type": "string"
          },
          "related_url": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "topics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "detail_description": {
            "type": "string"
          },
          "formatted_description": {
            "type": "string"
          },
          "topics_name": {
            "type": "string"
          },
          "stargazer_count": {
            "type": "string"
          },
          "watcher_count": {
            "type": "string"
          },
          "forks_count": {
            "type": "string"
          },
          "stargazers_path": {
            "type": "string"
          },
          "watchers_path": {
            "type": "string"
          },
          "fork_network_path": {
            "type": "string"
          },
          "activity_path": {
            "type": "string"
          },
          "report_path": {
            "type": "string"
          },
          "owner_login": {
            "type": "string"
          },
          "is_org": {
            "type": "string"
          },
          "sponsors": {
            "type": "string"
          },
          "deployments": {
            "type": "string"
          },
          "packages": {
            "type": "string"
          },
          "used_by": {
            "type": "string"
          },
          "contributors": {
            "type": "string"
          },
          "languages": {
            "type": "string"
          },
          "cta": {
            "type": "string"
          },
          "suggested_workflows": {
            "type": "string"
          },
          "has_citation": {
            "type": "string"
          },
          "is_private": {
            "type": "string"
          },
          "is_template": {
            "type": "string"
          },
          "is_fork": {
            "type": "string"
          },
          "is_mirror": {
            "type": "string"
          },
          "is_archived": {
            "type": "string"
          },
          "visibility_label": {
            "type": "string"
          },
          "is_advisory_workspace": {
            "type": "string"
          },
          "is_org_owned": {
            "type": "string"
          },
          "repository_id": {
            "type": "string"
          },
          "repository_name": {
            "type": "string"
          },
          "watchers_count": {
            "type": "string"
          },
          "typed_forks_count": {
            "type": "integer",
            "minimum": 0,
            "description": "Reviewed numeric reading of forks_count; source value is preserved."
          },
          "typed_stargazer_count": {
            "type": "integer",
            "minimum": 0,
            "description": "Reviewed numeric reading of stargazer_count; source value is preserved."
          },
          "typed_watcher_count": {
            "type": "integer",
            "minimum": 0,
            "description": "Reviewed numeric reading of watcher_count; source value is preserved."
          },
          "typed_watchers_count": {
            "type": "integer",
            "minimum": 0,
            "description": "Reviewed numeric reading of watchers_count; source value is preserved."
          }
        }
      },
      "output_schema_note": "Some fields the source returns are not published here (identifiers, personal details and page-building noise). A record can carry fields this schema does not list, so additionalProperties is true. Do not reject a record for an extra field. The live contract, linked as live_contract, lists every field the saved definition declares.",
      "examples": [
        {
          "kind": "saved_validation_records",
          "saved_at": "2026-10-26T03:38:05.421Z",
          "live_verified": false,
          "request": {
            "input": {}
          },
          "records_shown": 2,
          "records_saved": 2,
          "records": [
            {
              "title": "web-scraping-google-sheets",
              "description": "Guide to Using Google Sheets for Basic Web Scraping",
              "topics": [
                "web-scraping",
                "web-crawler-python",
                "email-scraper",
                "google-trends-api",
                "python-web-scraper",
                "scraper-api",
                "web-scraping-python",
                "google-search-scraper",
                "google-sheets-web-scraping",
                "web-scraping-google-sheets"
              ],
              "url": "https://github.com/oxylabs/web-scraping-google-sheets"
            },
            {
              "title": "creeper",
              "owner_login": "z7r1k3",
              "description": "Web Crawler and Scraper",
              "stargazer_count": "12",
              "forks_count": "1",
              "programming_language": "Python",
              "topics": [
                "python",
                "windows",
                "macos",
                "linux",
                "cli",
                "crawler",
                "scraper",
                "osint",
                "web-crawler",
                "web-scraper",
                "information-gathering",
                "web-crawler-python",
                "redteam",
                "python39"
              ],
              "url": "https://github.com/z7r1k3/creeper"
            }
          ]
        }
      ],
      "request_example": {
        "body": {
          "input": {
            "topics": "web-scraping"
          },
          "max_items": 25
        },
        "curl": "curl -X POST https://broker.cleanedweb.com/v1/catalog/public/apis/generated_047a8ebb25911ccf62f4a212/endpoints/generated_047a8ebb25911ccf62f4a212_search/run \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Idempotency-Key: UNIQUE_REQUEST_ID\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n  \"input\": {\n    \"topics\": \"web-scraping\"\n  },\n  \"max_items\": 25\n}'"
      },
      "result": {
        "method": "GET",
        "url": "https://broker.cleanedweb.com/v1/catalog/public/apis/generated_047a8ebb25911ccf62f4a212/endpoints/generated_047a8ebb25911ccf62f4a212_search/result",
        "note": "A run that does not end within wait_seconds answers 202. Read the result with the same API key and the same Idempotency-Key."
      },
      "links": {
        "page": "https://cleanedweb.com/catalog/github-topics-repositories-api/",
        "markdown": "https://cleanedweb.com/catalog/github-topics-repositories-api/index.md",
        "live_contract": "https://app.cleanedweb.com/api/catalog/apis/generated_047a8ebb25911ccf62f4a212/endpoints/generated_047a8ebb25911ccf62f4a212_search/contract",
        "run_docs": "https://cleanedweb.com/docs/run-catalog-api/"
      }
    }
  ],
  "links": {
    "page": "https://cleanedweb.com/catalog/github-topics-repositories-api/",
    "markdown": "https://cleanedweb.com/catalog/github-topics-repositories-api/index.md",
    "contract": "https://cleanedweb.com/catalog/github-topics-repositories-api/contract.json",
    "catalog": "https://cleanedweb.com/catalog/",
    "index": "https://cleanedweb.com/catalog/index.json",
    "openapi": "https://cleanedweb.com/catalog/openapi.json"
  }
}
