Gerrit Code Review Extractor avatar

Gerrit Code Review Extractor

Pricing

from $0.35 / 1,000 records

Go to Apify Store
Gerrit Code Review Extractor

Gerrit Code Review Extractor

Point at any Gerrit code-review server (Android, Chromium, OpenStack, Wikimedia, GerritHub, self-hosted) and get one structured row per change: subject, status, owner, review labels, insertions/deletions, comments and merge history. Also lists projects and server info.

Pricing

from $0.35 / 1,000 records

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

10 hours ago

Last modified

Categories

Share

Point at any Gerrit code-review server and get clean, structured rows — one per change (code review), project, or server. Gerrit is the self-hosted code-review server behind Android, Chromium, and Go, and adopted by OpenStack, Wikimedia, ONAP, LineageOS, Eclipse, GerritHub and countless corporate and university deployments. Every Gerrit speaks the identical REST API and leaves anonymous read on for public projects, so this one actor works against all of them — no per-server scraper, no login.

What it does

Three modes, chosen by the Run mode field:

  • changes (default) — one row per code-review change matching your query (status:open by default). Columns: project, change number, subject, status, owner, branch, insertions/deletions, comment counts, work-in-progress flag, and (with options) review labels, a submit-label summary, and message counts.
  • projects — the server's project/repository inventory, one row per project (name, state, parent, description).
  • server — one row per server describing its version and authentication model.

Point it at several servers at once and it runs each in turn; a URL that isn't a Gerrit (a login page, or a host that migrated to GitLab/Gitea) is skipped with a warning instead of failing the whole run.

Quick start (3 rows, about $0.0015)

The Input form opens pre-filled with exactly this job, so you can click Start directly (or paste it into the JSON view):

{
"sources": ["https://review.opendev.org"],
"mode": "changes",
"query": "project:openstack/nova status:open",
"maxRecords": 3
}

To change it: swap openstack/nova for any project on that server, or replace the query entirely (see the query examples below). Keep maxRecords until the rows look right, then raise it.

Real output preview

Three rows from a local run of the input above on 2026-09-25 (selected fields; _raw and null columns omitted). Values change as reviews move.

changeNumberprojectsubjectstatusinsertionsdeletionstotalCommentsupdated
973750openstack/novaCheck volume status before live migrationNEW773112026-09-24 23:45:35
1004160openstack/novaReduce the unnecessary executors shutdown logs in test jobsNEW72112026-09-24 23:35:11
1007318openstack/novalibvirt: call recover method from live_migrationNEW1355402026-09-24 23:08:57

Example input with review labels

{
"sources": ["https://review.opendev.org"],
"mode": "changes",
"query": "status:open",
"options": ["LABELS", "DETAILED_ACCOUNTS"],
"maxRecords": 20
}

Other ready-to-run servers: https://review.gerrithub.io (GerritHub), https://gerrit.onap.org, https://gerrit.osmocom.org, and any self-hosted instance. Some servers sit at a /r mount (https://gerrit.wikimedia.org) — paste either form, the /r path is auto-detected.

Note on datacenter IPs. A few very large Google-hosted servers (android-review, chromium-review, go-review on googlesource.com) and some others block datacenter IP ranges, so they respond from a laptop but not from a cloud datacenter. When running on the platform, prefer an independent server such as review.opendev.org, or supply auth for a gated one.

Query examples (changes mode)

  • status:open — all open changes
  • status:merged — recently merged changes
  • project:openstack/nova status:open — one project's open changes (project names are per server: platform/frameworks/base exists on Android's server, not on OpenDev, and a query that matches nothing returns 0 rows and costs nothing)
  • owner:self status:open — (with auth) your own open changes
  • after:2026-01-01 status:merged — merged since a date
  • is:wip — work-in-progress changes

Output

One flat row per record. Change rows carry

_type/_source/_mode/_software/ _serverVersion
metadata plus the flattened change fields and a lossless _raw copy of the original API entry (capped for size). Reviewer/owner emails and the full attention-set live only inside _raw, never as top-level columns.

Pricing

Pay-per-event: one record charge per emitted row, $0.0005 per row on the FREE tier (lower on paid plans). Zero rows means zero record charges. Apify platform usage is billed separately.

RunRowsRecord charges (FREE tier)
Quick start above3$0.0015
Default input (status:open, cap 20)20$0.01
maxRecords: 1000up to 1,000up to $0.50

maxRecords is a global cap across all sources; left empty it falls back to 20. Large servers hold far more matching changes than that, so raise it deliberately.

Your run's maximum charge is respected too: each row is charged as it is saved. The Actor stops before it requests a page or a server your budget cannot pay for, so you never receive rows you did not pay for. If a server fails after some rows were delivered, those rows stay in your dataset and the run is marked failed, so a partial export never looks complete.

Notes

  • Anonymous read is used by default. For a private or rate-limited server you may supply a bearer token, a cookie, or extraHeaders — these are never logged and are never required for public data.
  • The actor reads every field by key presence, so servers on different Gerrit versions (which populate different optional fields) all work without error.