{
  "name": "RubyGems Popular Gems API",
  "description": "Popular Ruby gems on RubyGems.org with gem name, summary, total downloads and gem link.",
  "api_id": "generated_665926ddf5efd1f7dad7adb3",
  "slug": "rubygems-popular-gems-api",
  "source": {
    "name": "RubyGems",
    "domain": "rubygems.org",
    "url": "https://rubygems.org/"
  },
  "category": "public_data",
  "countries": [],
  "languages": [
    "en"
  ],
  "record_types": [],
  "tags": [],
  "limitations": [
    "Summaries are shortened by the source. The latest version is not returned."
  ],
  "updated": "2026-11-03",
  "note": "Sample records are saved samples, not a live run. CleanedWeb is not affiliated with the source.",
  "endpoints": [
    {
      "endpoint_id": "generated_665926ddf5efd1f7dad7adb3_search",
      "name": "Extract records",
      "description": "Return records within the accepted scope.",
      "definition_version": "83946256cbb3c137d4af0f5eb173c267994c44c595fc1ffd7e235da2d0b59a88",
      "method": "POST",
      "path": "/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_search/run",
      "url": "https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_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": {
          "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."
          },
          "search": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[^\\x00-\\x1f\\x7f]+$",
            "description": "Optional. Text sent to the site's own search form; its result pages are read and revalidated like the collection. Omit to read the whole collection."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "output_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "title",
          "url"
        ],
        "properties": {
          "description": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "total_downloads": {
            "type": "integer"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "examples": [
        {
          "kind": "saved_validation_records",
          "saved_at": "2026-11-03T18:06:13.079Z",
          "live_verified": false,
          "request": {
            "input": {}
          },
          "records_shown": 2,
          "records_saved": 2,
          "records": [
            {
              "description": "Bundler manages an application's dependencies through its entire life, across many mach...",
              "title": "bundler",
              "total_downloads": 3906071902,
              "url": "https://rubygems.org/gems/bundler"
            },
            {
              "description": "A common interface to multiple JSON libraries, including fast_jsonparser, Oj, Yajl, and...",
              "title": "multi_json",
              "total_downloads": 1188317280,
              "url": "https://rubygems.org/gems/multi_json"
            }
          ]
        }
      ],
      "request_example": {
        "body": {
          "input": {},
          "max_items": 25
        },
        "curl": "curl -X POST https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_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  \"max_items\": 25\n}'"
      },
      "result": {
        "method": "GET",
        "url": "https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_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/rubygems-popular-gems-api/",
        "markdown": "https://cleanedweb.com/catalog/rubygems-popular-gems-api/index.md",
        "live_contract": "https://app.cleanedweb.com/api/catalog/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_search/contract",
        "run_docs": "https://cleanedweb.com/docs/run-catalog-api/"
      }
    }
  ],
  "links": {
    "page": "https://cleanedweb.com/catalog/rubygems-popular-gems-api/",
    "markdown": "https://cleanedweb.com/catalog/rubygems-popular-gems-api/index.md",
    "contract": "https://cleanedweb.com/catalog/rubygems-popular-gems-api/contract.json",
    "catalog": "https://cleanedweb.com/catalog/",
    "index": "https://cleanedweb.com/catalog/index.json",
    "openapi": "https://cleanedweb.com/catalog/openapi.json"
  }
}
