Redmine Extractor
Pricing
from $0.35 / 1,000 records
Redmine Extractor
Point at any Redmine instance (Ruby core, self-hosted project trackers) and get one structured row per issue: subject, project, tracker, status, priority, author, timestamps. Also lists projects and can attach issue journals.
Pricing
from $0.35 / 1,000 records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
A GENERIC "point at any Redmine instance" Apify actor — the issue-tracker sibling of the Bugzilla/Gitea/Gerrit generic extractors. Redmine is the Rails project-management / issue tracker behind Ruby-core (bugs.ruby-lang.org), many distros, and thousands of self-hosted installs, and every install ships the same native JSON REST API with anonymous read on public projects — so ONE actor spans every Redmine install in existence, no per-tracker scraper.
Input
| Field | Mode | Meaning |
|---|---|---|
sources (required) | all | One or more Redmine base URLs — https://www.redmine.org, https://bugs.ruby-lang.org, or any self-hosted install. /issues.json / /projects.json is appended for you. |
mode | — | issues (default) or projects. |
projectId | issues | Restrict to a project by numeric id or identifier (e.g. redmine, ruby-master). |
statusId | issues | * for all statuses, open, closed, or a numeric id. Redmine returns only open issues by default. |
trackerId | issues | Restrict to a numeric tracker id (per-server, e.g. 1 = Defect). |
includeJournals | issues | Opt-in per-issue fetch that attaches journal (comment) count + the last comment note. Makes one extra request per issue — pair with a small maxRecords. |
maxRecords | all | Global cap across every source (one row = one billable event). |
apiKey | all | Optional Redmine API key for a private instance (X-Redmine-API-Key). Never logged. |
extraHeaders | all | Optional extra request headers (JSON). |
No filter is required in issues mode — an unfiltered Redmine issue query is valid
and returns the open issues across all public projects. Run projects mode first
to discover valid project identifiers.
Modes
- issues (default) — paginated
/issues.json→ one flat row per issue:id,subject,description,project_id/project_name,tracker_name,status_name,status_is_closed,priority_name,category_name,author_name/author_id,assigned_to_name/assigned_to_id,done_ratio,is_private,created_on,updated_on,closed_on, plus a lossless_raw. WithincludeJournals, alsojournal_count,last_note,last_note_on,last_note_by. - projects —
/projects.json→ one row per public project (id,name,identifier,description,status,is_public,created_on,updated_on).
Behaviour
- Every field is read by key presence (
dict.get) — Redmine servers differ in which optional fields they populate (e.g.www.redmine.orgissuestatusomitsis_closedwhilebugs.ruby-lang.orgincludes it), so an absent field yieldsnullfor that column, never a crash. Unknown fields survive in_raw. - Timestamps (
created_on/updated_on/closed_on) are normalized to ISO-8601Z; a value that is already a bare date is kept asYYYY-MM-DD. - A source behind an anti-bot interstitial (a non-JSON HTTP 200), a
403/404, or a JSON body without the expectedissues/projectsarray (the REST API disabled) is a clean skip-with-warning — the runner continues with the other sources. The run only fails fast (exit 91) when every source was skipped, so nothing broken ships and the cloud smoke gate stays honest. - A valid instance with 0 matching issues → 0 records and a clean exit 0. Unpopular is fine; the actor never fabricates rows.
Pricing
Pay-per-event: one record charge per emitted dataset row.
Development
python3.12 -m venv .venv && source .venv/bin/activatepip install -r requirements.txtpython tests_logic.py # pure-logic tests (no network)apify validate-schemaapify run # local run (set .actor storage INPUT.json)