Taiga Project Extractor
Pricing
from $0.35 / 1,000 records
Taiga Project Extractor
Point at any Taiga instance (open-source agile PM) for one structured row per public project: name, slug, fans, watchers, activity, tags, owner, timestamps. Also fetch a project by slug, per-project agile stats, and fleet counts via the documented REST API.
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
2 days ago
Last modified
Categories
Share
A GENERIC "point at any Taiga instance" Apify actor — the agile-PM sibling of
the Redmine / Bugzilla issue-tracker generic extractors. Taiga
(kaleidos/taiga) is the open-source agile project-management platform, and every
install ships the same native JSON REST API. Its public SaaS host
(api.taiga.io) serves ~180k public projects readable anonymously via
discover mode — so ONE actor spans every Taiga install that leaves public/discover
read open, no per-project scraper.
Input
| Field | Mode | Meaning |
|---|---|---|
baseUrl | all | A Taiga instance API root. Defaults to https://api.taiga.io (the public host — works with no setup). The /api/v1/... path is appended for you. |
baseUrls | all | Optional array of instance roots for a multi-instance run. A source that is unreachable / auth-gated / not a Taiga host is skipped with a warning. |
mode | — | discover (default), bySlug, stats, or discovery. |
slug | bySlug / stats | The project slug (e.g. taiga). Required in bySlug; in stats it resolves the project id via by_slug. |
projectId | stats | A numeric project id to fetch stats for directly (instead of a slug). |
orderBy | discover | Taiga's supported ordering, passed through — e.g. total_fans, total_activity. |
maxRecords | all | Global cap across every source (one row = one billable event). |
token | all | Optional Taiga auth token for a private instance (Authorization: Bearer). Never logged. |
extraHeaders | all | Optional extra request headers (JSON). |
Modes
- discover (default) — paginated
?discover_mode=true→ one flat row per public project:id,name,slug,description,createdDate/modifiedDate,isPrivate,isFeatured,totalFans,totalWatchers,totalActivity(+ last-week/month),totalStoryPoints,tags,ownerUsername/ownerFullName, theis*Activatedmodule flags, plus a lossless_raw. Taiga paginates viapageand thex-pagination-countresponse header. - bySlug —
/projects/by_slug?slug=<slug>→ one full project row (same key set as discover). - stats — resolve the project id (via
by_slugfrom a slug, or a numericprojectId), then/projects/{id}/stats→ one agile-metrics row:totalMilestones,totalPoints,closedPoints,definedPoints,assignedPoints,speed. - discovery —
/api/v1/stats/discover→ one fleet-count summary row (projectsTotal), plus a single sample project.
Behaviour
- Every field is read by key presence (
dict.get) — Taiga projects differ in which optional fields they populate, so an absent field (total_fans,tags_colors, anullowner) yieldsnull/[]for that column, never a crash. Unknown fields survive in_raw. Tags are unioned from both thetagsarray and thetags_colorsmap keys. - Timestamps (
createdDate/modifiedDate) are normalized to ISO-8601Z(millisecond precision dropped to seconds); a bare date is kept asYYYY-MM-DD. Point / speed metrics are preserved as numbers (a whole-valued float like150.0is narrowed to150). - A source behind an anti-bot interstitial (a non-JSON 200), a
401(Taiga's reply for a missing/private project), a403/404, or a JSON body without a recognizable Taiga project shape 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 public projects → 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)