# RubyGems Popular Gems API

> Popular Ruby gems on RubyGems.org with gem name, summary, total downloads and gem link.

- Page: https://cleanedweb.com/catalog/rubygems-popular-gems-api/
- Contract (JSON): https://cleanedweb.com/catalog/rubygems-popular-gems-api/contract.json
- Source: rubygems.org (https://rubygems.org/)
- Category: Public data
- Languages: English
- Updated: 2026-11-03

## About

RubyGems.org is the public registry for Ruby libraries. This API reads its list of popular gems and returns a record for each one: the gem name, a short summary, total downloads and the link to its page.

Total downloads is the count the registry shows. Summaries are cut short by the source, so use the gem link when you need the full text.

## Typical uses

- Rank gems by total downloads.
- Find popular gems that match a search word.
- Track which gems stay popular over time.

## Limitations

- Summaries are shortened by the source. The latest version is not returned.

A run reads until the source ends or your `max_items`, `timeout_seconds` or budget stops it.

## Key fields

| Field | Type | Sample value |
| --- | --- | --- |
| `title` | string | `bundler` |
| `description` | string | `Bundler manages an application's dependencies through its entire life, across m…` |
| `total_downloads` | integer | `3906071902` |
| `url` | string | `https://rubygems.org/gems/bundler` |

Sample values come from one saved record, not a live run. Every field with its type, and the schemas, are in https://cleanedweb.com/catalog/rubygems-popular-gems-api/contract.json

## Inputs

- `search` (string): Optional. Text for the site's search box. Leave it out to read everything.

`continuation` and `read_on` resume a run that stopped early; see https://cleanedweb.com/catalog/rubygems-popular-gems-api/contract.json.

## Request

`POST https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_search/run`

```bash
curl -X POST https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_search/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: UNIQUE_REQUEST_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {},
  "max_items": 25
}'
```

Send an `Idempotency-Key` header with every run and save it before you send. Reuse it only to retry the same request. If the run does not end within `wait_seconds`, read the result with the same API key and key:

`GET https://broker.cleanedweb.com/v1/catalog/public/apis/generated_665926ddf5efd1f7dad7adb3/endpoints/generated_665926ddf5efd1f7dad7adb3_search/result`

## Run it

Reading the catalog needs no credential. Running needs a CleanedWeb account and an API key with the `run` scope; the first 5,000 records are free, then $1 per 1,000 records. See https://cleanedweb.com/docs/run-catalog-api/

CleanedWeb is not affiliated with RubyGems.
