BOINC Project Extractor avatar

BOINC Project Extractor

Pricing

from $0.35 / 1,000 records

Go to Apify Store
BOINC Project Extractor

BOINC Project Extractor

Point at ANY BOINC volunteer-computing project (PrimeGrid, Einstein@Home, Rosetta@Home, yoyo@home, NFS@Home) and extract its public XML: applications & versions, server status & daemons, or the user/team/host stats exports. Sniffs the body, gunzips file-gzip stats. One uniform runner.

Pricing

from $0.35 / 1,000 records

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Share

Point this actor at any BOINC volunteer-computing project and extract its uniform public XML — no per-project code, no API key.

BOINC powers ~40 distributed-computing projects (PrimeGrid, Einstein@Home, Rosetta@Home, yoyo@home, NFS@Home, World Community Grid, …). Because BOINC is one open-source framework, every project serves the same server-side XML endpoints. This actor is a single generic runner over all of them.

Modes

ModeEndpointOutput
apps (default)apps.php?xml=1One row per application version: name, friendly name, platform, version number, plan class, release date.
serverStatusserver_status.php?xml=1One row per daemon (host, command, status) + one summary row (queue counters, users, results).
userStatsstats/user.gzOne row per user: total credit, exp-avg credit, country, team, created.
teamStatsstats/team.gzOne row per team.
hostStatsstats/host.gzOne row per host: CPU vendor/model, OS, cores, credit.

Input

{
"projectUrl": "https://www.primegrid.com",
"mode": "apps",
"maxRecords": 20000
}
  • projectUrl (required) — the project master URL. The actor appends the mode's path.
  • mode — apps | serverStatus | userStats | teamStats | hostStats (default apps).
  • maxRecords — cap on emitted rows (default 20000). Stats exports can be very large (Rosetta's user export is ~1.4M rows); parsing streams so the cap is honored without loading the whole export.
  • userAgent, timeoutSecs — optional overrides.

Example projects (verified live)

  • https://www.primegrid.com — apps (25 apps / 265 versions), serverStatus
  • https://einsteinathome.org — apps (8 apps / 61 versions)
  • https://escatter11.fullerton.edu/nfs — open stats (21k+ users)
  • https://www.rechenkraft.net/yoyo — apps, serverStatus, stats

Note: some projects (e.g. PrimeGrid, Einstein@Home) auth-wall their stats/*.gz exports. Use apps or serverStatus on those, or point stats modes at a project that publishes open stats such as NFS@Home.

How it handles the awkward parts

  • Content-Type lies. Some projects serve XML as text/html. The actor sniffs the body for the expected root element rather than trusting the header.
  • Stats are file-gzip, not transport-gzip. They're fetched with Accept-Encoding: identity and gunzipped as a file, then streamed with iterparse so multi-million-row exports don't blow memory.
  • Daemon status is served two ways (a <status> child on some projects, trailing text on others) — both are handled.
  • A non-200, an HTML/auth-wall page, or a body missing the expected BOINC root fails fast — it never reports an unreachable or empty endpoint as a success.

Output

Structured JSON rows in the dataset, plus one trailing metadata record (_recordType: "meta") summarizing the run (mode, endpoint, emitted-row count, whether the cap was hit). Every row carries projectUrl and _source.

Pricing

Pay-per-event: $0.0005 per record (one application version, daemon, or user/team/host stat). The trailing metadata record is not billed.

Maximum charge per run

The Actor respects the maximum charge you set for a run. Each record is written and billed in the same step, so the dataset never holds more paid records than you were charged for, and never more than maxRecords.

  • If the budget cannot cover even one record, the Actor makes no request to the project and ends successfully with only the free metadata record.
  • When the budget runs out mid-run, it stops, logs Max total charge reached, and the metadata record shows budgetStopped: true.
  • If the platform reports a billing error, the run fails instead of continuing unbilled.
  • A restarted or migrated run resumes after the records it already delivered, without writing or charging them twice, as long as the project still serves the same data. If the data changed in between, or a restart happens while a batch was being written, the run stops rather than guess. A run that fails part-way keeps (and is billed for) the records it already delivered.

Note: each mode fetches one endpoint once. For the stats modes (userStats/teamStats/hostStats) the whole .gz export is downloaded before rows are counted, so a large project's export is transferred even for a small maxRecords.