GitHub Release avatar

GitHub Release

Pricing

$0.01 / 1,000 releases

Go to Apify Store
GitHub Release

GitHub Release

Analyze public GitHub releases or supplied release records. Get structured data for tags, notes, assets, dates, download counts, repository context, version movement, and risk signals. Compare current and earlier sets to find new or changed notes and assets.

Pricing

$0.01 / 1,000 releases

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

🚀 GitHub release change signals for developers

Developers, maintainers, and security teams can compare public GitHub releases or supplied release records in one run. Get structured rows with release tags, notes, assets, dates, authors, repository context, comparisons, version movement, risk signals, and a short change brief so important updates are easier to review.

Use cases

📦 Release data you can review

Each matching release becomes one structured dataset row. Rows can include the repository, release tag, release page, publication times, notes, author, status, attached assets, and source links. Repository runs can also include stars, the default branch, and the latest commit time.

When you provide an earlier release set, the row shows whether the release is new, changed, unchanged, or not compared. It can list changed note terms and asset names, classify semantic-version movement, flag built-in or watchlist signals, score importance, and add a short change brief. The signals are based on source fields, version comparisons, and matching terms; they are not a claim of deeper semantic understanding.

▶️ Compare releases in one run

  1. Choose Repository releases to read public GitHub release data, or choose Supplied release data to compare JSON records without fetching GitHub.
  2. For repository releases, enter one or more public repositories in owner/name form. For supplied data, add the current release records.
  3. Add filters for release history, prereleases, drafts, dates, risk signals, watchlist keywords, and unchanged releases. Add previousReleaseRecords when you want a comparison.
  4. Run the Actor and open the dataset output. If a public release source has a reading problem, open the diagnostics output.

Repository mode uses public GitHub access and does not need a GitHub token. Private repositories, commits, pull requests, and non-GitHub release sources are outside this Actor's scope.

⚙️ Input

Choose one target. It is required, and fields for the other target are ignored. Only target is required; the other fields are optional.

Input fields

FieldTypeWhat it does
targetSelectChoose Repository releases or Supplied release data.
repositoriesString listIn repository mode, enter one or more public GitHub repositories in owner/name form. Use a separate run for a different release-monitoring setup.
releaseHistoryLimitIntegerSets how many recent releases to inspect per repository. Leave it empty to return all available results until the source is exhausted.
currentReleaseRecordsJSON object listIn supplied mode, provide current release records without fetching GitHub. Each item should have an identity such as tag_name or id; fields such as assets may be nested. Use UTC for time values.
includePrereleasesBooleanIncludes prerelease releases in the results when on.
includeDraftsBooleanIn supplied mode, includes records marked as drafts. It has no effect in repository mode because public GitHub listings expose published releases only.
publishedFromUTC date stringLimits analysis to releases published on or after this UTC date. Leave it empty to use all available history.
onlyFlaggedBooleanReturns only releases with a detected risk or watchlist signal.
watchKeywordsString listFlags words or phrases in release notes. Matching is case-insensitive.
previousReleaseRecordsJSON object listOptionally provides the earlier JSON release set for comparison. Repository mode uses the earlier repository set; supplied mode uses the same record shape as currentReleaseRecords.
changeScopeSelectChooses only new releases, or new releases plus changed notes or assets.
includeUnchangedBooleanIncludes releases with no changes in snapshot or comparison results.

Input example

This example is copied from a successful current-beta repository run:

{
"target": "repository-releases",
"repositories": [
"microsoft/vscode"
],
"releaseHistoryLimit": 10,
"includePrereleases": false,
"includeDrafts": false,
"onlyFlagged": false,
"changeScope": "new-and-changed",
"includeUnchanged": true
}

🧾 Output

The dataset output links to the structured release rows. The diagnostics output links to a key-value record with problems found while reading public GitHub release data.

Run outputs

  • dataset — Opens the dataset items in the overview view.
  • diagnostics — Opens source diagnostics in the default key-value store.

Dataset row fields

FieldTypeWhat it does
repositoryObjectRepository that published the release.
repository.nameStringGitHub repository name in owner/name form.
repository.urlURLLink to the GitHub repository.
repository.starsIntegerNumber of GitHub stars, when the source provides it.
repository.defaultBranchStringName of the default branch, when the source provides it.
repository.latestCommitAtDate-time stringTime of the latest commit on the default branch, when known.
releaseObjectRelease details and attached files.
release.idIntegerGitHub release ID, when the source provides it.
release.tagNameStringGit tag that identifies the release.
release.nameStringName shown for the release, when provided.
release.urlURLLink to the release page on GitHub.
release.publishedAtDate-time stringTime when the release was published, when known.
release.updatedAtDate-time stringTime when the release record was last changed, when known.
release.notesStringRelease notes published with the release.
release.authorObjectGitHub user who created the release, when known.
release.author.loginStringGitHub login of the release author.
release.author.urlURLLink to the author's GitHub profile.
release.statusObjectPublication state and prerelease flag.
release.status.stateStringRelease state: draft or published.
release.status.isPrereleaseBooleanWhether GitHub marks the release as a prerelease.
release.assetsArrayFiles attached to the release.
release.assets[]ObjectOne file attached to the release.
release.assets[].nameStringName of the attached file.
release.assets[].downloadUrlURLDirect download link, when available.
release.assets[].sizeBytesIntegerFile size in bytes.
release.assets[].contentTypeStringMedia type reported for the file.
release.assets[].downloadCountIntegerNumber of downloads reported for the file.
release.assets[].updatedAtDate-time stringTime when the file record was last changed, when known.
comparisonObjectChanges found against the earlier release record, when one was supplied.
comparison.statusStringComparison state: new, changed, unchanged, or not-compared.
comparison.notesChangedBooleanWhether the release notes differ from the earlier record.
comparison.notesTermsAddedString listWords or phrases in the new notes but not the earlier notes.
comparison.notesTermsRemovedString listWords or phrases in the earlier notes but not the new notes.
comparison.assetsChangedBooleanWhether the release assets differ from the earlier record.
comparison.assetChangesObjectAsset names and counts from the comparison.
comparison.assetChanges.addedNamesString listNames of files added since the earlier record.
comparison.assetChanges.removedNamesString listNames of files removed since the earlier record.
comparison.assetChanges.changedNamesString listNames of files whose details changed since the earlier record.
comparison.assetChanges.previousCountIntegerNumber of files in the earlier record, when supplied.
semanticVersionObjectSemantic-version values and movement between release records.
semanticVersion.currentStringNormalized semantic version for this release, when valid.
semanticVersion.previousStringNormalized semantic version from the earlier record, when valid.
semanticVersion.movementStringVersion movement: major, minor, patch, prerelease, build, none, unknown, or not-compared.
riskObjectRisk and watchlist signals found in the release notes.
risk.hasRiskBooleanWhether a breaking-change, security, or watchlist signal was found.
risk.signalsString listBuilt-in signals found in the notes: breaking-change or security.
risk.matchedKeywordsString listBuyer keywords found in the release notes.
importanceObjectScore and reasons that help rank releases for review.
importance.scoreIntegerRelease importance score from 0 to 100.
importance.levelStringImportance level: low, medium, or high.
importance.reasonsString listEvidence used to set the importance score.
summaryObjectShort view of release themes, cadence, position, and value.
summary.themesString listMain themes found in the release notes.
summary.cadenceStringPlain-language summary of the repository's release cadence.
summary.positioningStringWhat role the release plays in the product or repository.
summary.whyItMattersStringWhy a user may want to review the release.
changeBriefStringPlain-language brief of the release and its changes.

Example changed release row

This genuine row comes from a successful current-beta supplied-release-data run. It shows a changed major release with a security signal, a watchlist match, and asset changes.

{
"repository": {
"name": "example/widget",
"url": "https://github.com/example/widget"
},
"release": {
"tagName": "v2.0.0",
"url": "https://github.com/example/widget/releases/tag/v2.0.0",
"notes": "Security fix and breaking change",
"status": {
"state": "published",
"isPrerelease": false
},
"assets": [
{
"name": "release.tar.gz",
"downloadUrl": "https://github.com/example/widget/releases/download/v2.0.0/release.tar.gz",
"sizeBytes": 42,
"contentType": "application/gzip",
"downloadCount": 3,
"updatedAt": "2026-08-01T12:31:00Z"
}
],
"id": 200,
"name": "Release 2.0.0",
"publishedAt": "2026-08-01T12:00:00Z",
"updatedAt": "2026-08-01T12:30:00Z",
"author": {
"login": "release-bot",
"url": "https://github.com/release-bot"
}
},
"comparison": {
"status": "changed",
"notesChanged": true,
"notesTermsAdded": [
"and",
"breaking",
"change",
"fix",
"security"
],
"notesTermsRemoved": [
"maintenance"
],
"assetsChanged": true,
"assetChanges": {
"addedNames": [
"release.tar.gz"
],
"removedNames": [
"old.tar.gz"
],
"changedNames": [],
"previousCount": 2
}
},
"semanticVersion": {
"current": "2.0.0",
"previous": "1.9.0",
"movement": "major"
},
"risk": {
"hasRisk": true,
"signals": [
"breaking-change",
"security"
],
"matchedKeywords": [
"security"
]
},
"importance": {
"score": 100,
"level": "high",
"reasons": [
"release notes or assets changed",
"major version movement",
"release assets changed",
"breaking-change signal",
"security signal",
"watchlist keyword matched"
]
},
"summary": {
"themes": [
"breaking changes",
"security",
"bug fixes"
],
"cadence": "Not enough release history to estimate cadence.",
"positioning": "A major release with broad version movement.",
"whyItMatters": "Review this release because its notes contain a risk or watchlist signal."
},
"changeBrief": "Release 2.0.0 has changed since the prior snapshot. Its semantic version movement is major. Risk or watchlist signals were found in the notes. Main themes: breaking changes, security, bug fixes."
}

💳 Pricing

Charge event

You pay $0.00001 for each successfully returned GitHub release. Empty runs, source diagnostics, and setup work do not create this event because it is tied to a successfully returned release.

🔌 Integrations

Start runs from the Apify Console or API. Read dataset rows through the Apify Dataset API, use diagnostics when a public source has a reading problem, and export the dataset in standard Apify formats for your own workflow.

❓ FAQ

Can I compare a new release with an earlier release set?

Yes. Add previousReleaseRecords. In Repository releases, it is the earlier repository set; in Supplied release data, use the same record shape as the current records. Set changeScope to new-and-changed to include changed notes or assets.

Can I read public GitHub releases without a token?

Yes. Repository releases uses public GitHub release data and does not need a GitHub token. Supplied release data compares the JSON you provide and does not fetch GitHub.

Can I include prereleases or draft releases?

Turn on includePrereleases to include prereleases. includeDrafts applies to supplied records; it has no effect on repository releases because public GitHub listings expose published releases only.

Can I flag my own words in release notes?

Yes. Add words or phrases to watchKeywords. Matching is case-insensitive. Turn on onlyFlagged to return releases with a built-in risk or watchlist signal.

Does the Actor show changed release notes and assets?

Yes. With an earlier release set, comparison fields show whether notes or assets changed, the added or removed note terms, and changed asset names and counts.

Does it return asset download counts and repository stats?

When the source provides them, asset rows include downloadCount, and repository data can include stars, defaultBranch, and latestCommitAt.

Does it send alerts or keep a baseline?

Runs are on demand. The Actor does not promise a scheduler, proactive alerts, or automatic baseline retention. Pass previousReleaseRecords when you want a comparison.

What happens when a public release source has a problem?

The run exposes source problems through the diagnostics key-value output. A filter can also leave the dataset with no matching release rows.

Does it analyze commits, pull requests, or private repositories?

No. It focuses on public GitHub release data. Commit history, pull requests, private repositories, and non-GitHub release sources are outside its scope.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré