Swift Package Index Scraper
Pricing
from $3.00 / 1,000 results
Swift Package Index Scraper
Scrape the Swift Package Index (swiftpackageindex.com) - search packages, look up rich package details or CI build matrices, list every package by a GitHub author/org, browse by keyword or SSWG maturity collection, pull recently added packages or releases, or list the entire package catalog.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape the Swift Package Index — the community catalog of open-source Swift packages. Search packages by keyword, pull a rich package detail page or its full CI build matrix, list every package published by a GitHub author or organization, browse packages by keyword/tag or by Swift Server Work Group (SSWG) maturity level, track recently added packages or releases, or list the entire package catalog in one run.
No login, no API key, and no cookies required — every mode reads data that is publicly visible on swiftpackageindex.com.
What this actor does
- Search packages by free-text query (name, description, keywords), with support for the site's built-in filter tokens (
stars:>500,platform:ios,linux,product:plugin, etc.) - Package detail — full metadata for one exact
owner/repopackage: summary, license, stars, Swift-tool and platform compatibility, SSWG collection membership, dependency/build stats, keywords, homepage and documentation links - Package build matrix — the full CI build results for one exact
owner/repopackage: pass/fail status for every Swift version × platform × package version combination the site has tested, with a direct link to each build's log page - By author/org — every package published under a GitHub username or organization (e.g. every package from
vapor,apple,pointfreeco) - By keyword/tag — every package tagged with a given keyword (e.g.
server,networking,swiftui) - By SSWG collection — browse the three official Swift Server Work Group maturity tiers: Sandbox, Incubating, Graduated
- Recently added packages — the newest packages indexed by the site
- Recent releases — the newest package releases, filterable by release kind (major / minor / patch / pre-release) and including changelog notes
- Full package catalog — every package the site has ever indexed (~11,000+), each with its last-updated date, straight from the site's sitemap index — the only unscoped, non-time-limited way to enumerate the entire catalog
- Empty fields are always omitted — every record only contains data that was actually found
Output per record
Every record is a flat JSON object. Fields are only present when the source page/feed actually contains that data — this actor never emits null, empty strings, or placeholder values.
| Field | Description |
|---|---|
owner | GitHub user/org that owns the package |
repo | GitHub repository name |
packageName | Display name of the package |
summary | Short package description |
githubUrl | GitHub repository URL |
packageUrl | Swift Package Index page URL |
licenseName / licenseUrl | Package license (e.g. MIT) and link to the license file |
readmeUrl | Direct link to the package's README on GitHub |
latestVersion / stableVersion | Most recent stable release version |
betaVersion | Most recent beta/pre-release version, if any |
defaultBranch | Name of the default Git branch |
versionCount | Number of published versions indexed |
swiftToolsVersion | Swift tools version declared by the latest manifest |
compatibleSwiftVersions[] | Swift language versions the latest release builds against |
compatiblePlatforms[] | Apple/Linux/Android/Wasm platforms the latest release builds for |
keywords[] | Tags/keywords associated with the package |
matchingKeywords[] | (search mode) keywords that matched the search query |
starCount | GitHub star count |
hasDocumentation | (search mode) whether hosted documentation is available |
lastActivity | (search mode) human-readable recency of the last commit/release |
maintainerInfo | Free-text maintainer/ownership description |
developmentSummary / commitsCount / releasesCount | (packageDetail) development history stats |
activitySummary / openIssuesCount / openPullRequestsCount | (packageDetail) GitHub issue/PR activity |
dependenciesSummary / dependenciesCount | (packageDetail) number of dependency packages |
librariesCount / executablesCount / pluginsCount / macrosCount | (packageDetail) product counts by type |
sswgCollectionSlug / sswgCollectionName | (packageDetail) SSWG maturity collection membership, if any |
products[] | (packageDetail) every library/executable/plugin/macro product the package vends, with its name and type |
dataRaceSafetySummary | (packageDetail) Swift 6 strict-concurrency status, e.g. Zero data race safety errors |
dataRaceSafetyErrorCounts | (packageDetail) per-platform data-race error counts (e.g. {"iOS": 0, "Linux": 0}), when the site publishes a breakdown |
fundingText | (packageDetail) sponsorship/funding blurb, if the maintainer has one configured |
firstPublishedAt | (packageDetail) ISO-8601 UTC timestamp the package was first published |
homepageUrl / documentationUrl | (packageDetail) package homepage and hosted documentation links |
lastUpdated | (packageDetail, allPackages) ISO date the package's page was last refreshed |
version | (recentReleases) the released version string |
releasedAt / addedAt | ISO-8601 UTC timestamp of the release/addition |
changelogNotes | (recentReleases) changelog/release-notes text, if published |
swiftVersion | (packageBuilds) Swift language version the build was run under, e.g. 6.3 |
platform | (packageBuilds) target platform of the build, e.g. macOS (SPM), iOS, Linux, Wasm, Android |
packageVersion | (packageBuilds) package version/branch the build was run against |
versionKind | (packageBuilds) stable, beta, or branch — which release channel packageVersion represents |
buildStatus | (packageBuilds) succeeded or failed |
buildUrl | (packageBuilds) link to the individual build's log page |
hasGeneratedDocs | (packageBuilds) whether this specific build generated hosted documentation |
recordType | package, packageDetail, build, or release |
scrapedAt | UTC ISO timestamp of when the actor collected the record |
Input
| Field | Type | Applies to mode | Default | Description |
|---|---|---|---|---|
mode | select | — | byAuthor | Which lookup to run — see the mode table below |
searchQuery | string | search | vapor | Free-text query, optionally with filter tokens like stars:>500 |
packageOwner | string | packageDetail, packageBuilds | vapor | GitHub user/org that owns the package |
packageRepo | string | packageDetail, packageBuilds | vapor | GitHub repository name of the package |
authorName | string | byAuthor | vapor | GitHub user/org to list every indexed package for |
keyword | string | byKeyword | server | Keyword/tag slug to list every package tagged with it |
collectionSlug | select | byCollection | sswg-graduated | sswg-sandbox / sswg-incubating / sswg-graduated |
releaseMajor | boolean | recentReleases | true | Include major-version releases |
releaseMinor | boolean | recentReleases | true | Include minor-version releases |
releasePatch | boolean | recentReleases | true | Include patch-version releases |
releasePre | boolean | recentReleases | false | Include pre-release / beta / alpha versions |
maxItems | integer | all | 50 | Hard cap on the number of records emitted (1–1000) |
Modes
| Mode | What it returns |
|---|---|
search | Packages matching a free-text search query, newest-ranked-first, paginated |
packageDetail | One record with the full detail page for an exact packageOwner/packageRepo |
packageBuilds | One record per Swift-version/platform/package-version build cell for an exact packageOwner/packageRepo |
byAuthor | Every package published by a GitHub user/org |
byKeyword | Every package tagged with a keyword |
byCollection | Every package in an SSWG maturity collection |
recentPackages | The most recently added packages, newest first |
recentReleases | The most recent releases across all indexed packages, newest first |
allPackages | Every package in the full catalog (owner/repo + last-updated date), unscoped and not time-limited |
Example: search for networking packages
{"mode": "search","searchQuery": "networking","maxItems": 30}
Example: full detail for one package
{"mode": "packageDetail","packageOwner": "vapor","packageRepo": "vapor"}
Example: build matrix for one package
{"mode": "packageBuilds","packageOwner": "vapor","packageRepo": "vapor"}
Example: every package by an organization
{"mode": "byAuthor","authorName": "pointfreeco","maxItems": 100}
Example: browse the graduated SSWG collection
{"mode": "byCollection","collectionSlug": "sswg-graduated"}
Example: recent stable releases only (no pre-releases)
{"mode": "recentReleases","releaseMajor": true,"releaseMinor": true,"releasePatch": true,"releasePre": false,"maxItems": 100}
Example: full package catalog
{"mode": "allPackages","maxItems": 500}
Use cases
- Dependency research — check a Swift package's license, Swift-tools version, and platform compatibility before adding it to a project
- Ecosystem monitoring — track new packages and releases across the whole Swift open-source community as they're published
- Server-side Swift adoption — browse the SSWG Sandbox/Incubating/Graduated tiers to find production-ready server packages
- CI/build health audits — pull a package's full build matrix to see which Swift versions and platforms it currently passes on
- Author/organization audits — list every package a company or maintainer publishes, e.g. Vapor, Apple, PointFree
- Catalog-wide analytics — export the entire Swift Package Index catalog to analyze ecosystem trends over time
FAQ
Do I need a Swift Package Index account or API key? No. Every mode reads publicly available pages and feeds — no login, API key, or cookies are needed.
Why do some records have fewer fields than others?
packageDetail reads the richest, most complete data (a single package's full page). byAuthor/byKeyword/byCollection read a lighter public JSON feed that doesn't include GitHub star counts or issue/PR activity. search and recentPackages/recentReleases each expose whatever their respective page/feed publishes. Fields that a given mode can't populate are simply omitted rather than sent as empty or fake values.
Can I filter recent releases to only stable versions?
Yes — set releaseMajor/releaseMinor/releasePatch to true and releasePre to false to exclude pre-releases. Note that if all four toggles are left off, the Swift Package Index feed falls back to showing every release kind (this is upstream behavior, not a bug).
Does search support the site's advanced filter syntax?
Yes — anything you could type into the search box on swiftpackageindex.com (e.g. stars:>500, last_activity:>2024-01-01, platform:ios,linux, product:plugin) works in searchQuery since it's passed straight through.
How many packages can I fetch in one run?
Use maxItems (1–1000) to cap how many records are emitted. byKeyword and byCollection return their full result set in one response; search and recentPackages/recentReleases paginate until maxItems is reached or the source runs out of results.
What's the difference between allPackages and byAuthor/byKeyword/byCollection?
allPackages is the entire, unscoped catalog — every package the site has ever indexed, in one list — while byAuthor/byKeyword/byCollection are scoped to a single author, tag, or SSWG tier. allPackages records only carry owner, repo, packageName, lastUpdated, and the two URL fields (no summary/license/stars); run packageDetail on a specific owner/repo from the results for the richer fields.
Why might search, packageDetail, packageBuilds, or allPackages occasionally return 0 results or fewer fields than expected?
These four modes read swiftpackageindex.com's web pages, which very occasionally throttle a request. On the rare run where that happens the actor reports it with a clear status message — simply re-run. byAuthor, byKeyword, byCollection, recentPackages, and recentReleases read public data feeds instead and aren't affected.
Is this affiliated with Apple or the Swift project? No. The Swift Package Index is an independent, community-run, open-source project. This actor is an independent scraper of its publicly available pages and feeds.