---
title: "GitHub"
description: "GitHub issues, pull requests and repositories naming your keyword, with the author's public profile."
canonical: https://docs.mentio.dev/platforms/github
markdown: https://docs.mentio.dev/platforms/github.mdx
---

# GitHub

GitHub issues, pull requests and repositories naming your keyword, with the author's public profile.

Mentio searches the titles and bodies of GitHub issues and pull requests for your keyword, and watches the repositories that name it.

| `platform`                    | `github`                                                          |
| ----------------------------- | ----------------------------------------------------------------- |
| What is found                 | Issues, pull requests and repository events                       |
| Freshness                     | About every 15 minutes; repositories every 6 hours                |
| Last 30 days on a new keyword | Yes, the newest 10, up to 3 of them the most starred repositories |

## Track it [#track-it]

Create a keyword limited to GitHub. Leave `platforms` out to search every platform.

TypeScript:

```ts
const response = await fetch('https://api.mentio.dev/v1/keywords', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.MENTIO_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "term": "Acme",
    "kind": "brand",
    "platforms": [
      "github"
    ]
  }),
});

const data = await response.json();
console.log(data);
```

Python:

```python
import os
import requests

response = requests.post(
    "https://api.mentio.dev/v1/keywords",
    headers={"Authorization": f"Bearer {os.environ['MENTIO_API_KEY']}"},
    json={
      "term": "Acme",
      "kind": "brand",
      "platforms": [
        "github"
      ]
    },
)
print(response.json())
```

cURL:

```bash
curl -X POST "https://api.mentio.dev/v1/keywords" \
  -H "Authorization: Bearer $MENTIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "term": "Acme",
  "kind": "brand",
  "platforms": [
    "github"
  ]
}'
```

## Read its mentions [#read-its-mentions]

Filter the mentions list to GitHub. `kind=repository` keeps the repository events; leave it out for issues and discussions too.

TypeScript:

```ts
const response = await fetch('https://api.mentio.dev/v1/mentions?platforms=github&kind=repository', {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.MENTIO_API_KEY}`,
  },
});

const data = await response.json();
console.log(data);
```

Python:

```python
import os
import requests

response = requests.get(
    "https://api.mentio.dev/v1/mentions?platforms=github&kind=repository",
    headers={"Authorization": f"Bearer {os.environ['MENTIO_API_KEY']}"},
)
print(response.json())
```

cURL:

```bash
curl -X GET "https://api.mentio.dev/v1/mentions?platforms=github&kind=repository" \
  -H "Authorization: Bearer $MENTIO_API_KEY"
```

Response (trimmed):

```json
{
  "data": [
    {
      "id": "mm_8f2k1x9q",
      "status": "open",
      "relevant": true,
      "keyword": {
        "id": "kw_123",
        "term": "Acme"
      },
      "post": {
        "publishedAt": "2026-11-07T14:32:10.000Z",
        "platform": "github",
        "kind": "repository",
        "url": "https://github.com/someone/acme-mcp",
        "title": "someone/acme-mcp reached 100 stars",
        "text": "acme-mcp: an MCP server for Acme. Topics: mcp, acme mcp",
        "repository": {
          "name": "someone/acme-mcp",
          "event": "stars",
          "stars": 104,
          "weeklyStars": 31
        },
        "engagement": {
          "likes": 104,
          "reposts": 12
        }
      },
      "author": {
        "name": "someone",
        "handle": "someone",
        "url": "https://github.com/someone"
      },
      "classification": {
        "relevance": 82,
        "sentiment": "positive",
        "intents": [
          "praise"
        ],
        "note": "A user recommends Acme by name."
      }
    }
  ],
  "nextCursor": "eyJ0IjoxNzMxMDAwMDAwfQ"
}
```

## What a mention carries [#what-a-mention-carries]

* `post.text`: the title and body.
* For a [repository event](#repositories): `post.kind` is `repository` and `post.repository` holds the facts (`name`, `event`, `stars`, `weeklyStars`).
* `post.title` is the event as a sentence and `post.text` the repository's name, description and topics. `post.engagement.likes` is its stars, `post.engagement.reposts` its forks, and `author` its owner.
* `author`: login, name, profile link, avatar and followers; the profile adds bio, company, location, website, public email and linked accounts (X, Mastodon, …).

The rest is the same on every platform: relevance, sentiment and intent from the classifier, your triage, and the keyword it matched. See the [mention shape](/api).

## Repositories [#repositories]

A repository is not a post, so what becomes a mention is something that happened to one. Mentio looks for your keyword in repository names, descriptions and topics, and reports four events:

| Event      | `post.title`                            | When                                                                                                              | By default |
| ---------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------- |
| `traction` | `owner/name: 34 stars in 6 days`        | A repository created in the last 30 days reached 10 stars                                                         | On         |
| `stars`    | `owner/name passed 2,000 stars`         | A repository with 100 stars or more crossed 100, 250, 500, 1,000, 2,000, 5,000, 10,000, 25,000, 50,000 or 100,000 | On         |
| `growth`   | `owner/name gained 412 stars in 7 days` | It gained at least 100 stars and 20% of its stars in a week                                                       | On         |
| `new`      | `New repository: owner/name`            | A repository naming your keyword was created, with or without stars. At most 10 per check, newest first           | Off        |

Use it to hear when a project in a space you care about takes off, when a clone or a competitor's integration appears, or (with `new`, for a brand) every time someone publishes a project built on your API.

### Choose what you pay for [#choose-what-you-pay-for]

`matching.repositories` on a keyword says which events it takes. It is applied before a mention is stored, so an event outside the rule is never classified, alerted or billed.

```json
{
  "term": "linkedin mcp",
  "matching": {
    "repositories": { "events": ["stars", "growth"], "minStars": 200, "minWeeklyStars": 100 }
  }
}
```

| Field            | Meaning                                                                                                                                                                               |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `events`         | The events taken. Default `["traction", "stars", "growth"]`; `[]` turns repositories off for the keyword                                                                              |
| `minStars`       | Only repositories with at least this many stars; `null` for no minimum                                                                                                                |
| `minWeeklyStars` | Only repositories that gained at least this many stars in the last 7 days (25 or more). It applies to every event, and replaces the default speed of `growth`; `null` for the default |

`new` is off by default because nearly every new repository has no stars. In one week we counted 13 for "linkedin mcp" and 9,531 for "claude code".

Turn it on for a brand name, where each one is somebody building with your product.

### Read them [#read-them]

A repository event is a mention with `post.kind: "repository"`, so `GET /v1/mentions?kind=repository` lists them alone (the same filter works in views, exports and alert rules), and `post.repository` says what happened without reading the title:

```json
{
  "post": {
    "platform": "github",
    "kind": "repository",
    "title": "stickerdaniel/linkedin-mcp-server passed 5,000 stars (+412 this week)",
    "url": "https://github.com/stickerdaniel/linkedin-mcp-server",
    "repository": { "name": "stickerdaniel/linkedin-mcp-server", "event": "stars", "stars": 5012, "weeklyStars": 412 },
    "engagement": { "likes": 5012, "reposts": 690 }
  }
}
```

`weeklyStars` is null while the repository's last week is not known yet. `event` is `new`, `traction`, `stars` or `growth`, or `top` for the most starred repositories a new keyword's look-back brings.

### What to know [#what-to-know]

* Repositories are checked every 6 hours. Star events cover the 300 most starred repositories naming your keyword that were pushed to in the last 30 days. Forks, mirrors and archived repositories are left out.
* Growth is measured from Mentio's own daily star counts, so `growth` and `minWeeklyStars` need a week of history: a keyword's first week brings traction and milestones only.
* Traction is for repositories created after the keyword started listening.
* A repository that passes a milestone while growing fast is one mention for a keyword taking both events: the milestone, whose title says the week's growth. A keyword taking `growth` alone gets the growth event.
* With a `minWeeklyStars` under 100, a repository reported growing slowly is reported once more if it reaches the default speed the same week.
* The first check after a keyword starts only records what exists: a repository that passed a milestone before you were listening is not reported. The look-back brings the most starred ones instead, titled `owner/name: 3,782 stars`.
* Each event is a mention like any other: classified, alerted and billed once.

## Mute an author [#mute-an-author]

`github.com/name`, a repository link (mutes its owner), `github.com/orgs/name`, or a handle. See [Mute authors](/alerts#mute-authors).

## Limits [#limits]

* Comments on issues and pull requests are not searched.
* A keyword inside a README or the code is not searched, only a repository's name, description and topics.
* GitHub lists an issue in search 15 to 50 minutes after it is opened; Mentio reads back far enough to catch it.
