F-Droid Open Source Android Apps

Datadory delivers f droid open source android apps data covering the full F-Droid repository catalog: 4,247 free-and-open-source Android applications with per-app SPDX license identifiers, suggested versions, category assignments, anti-feature flags, localized summaries in 70+ languages, and one sub-record per published APK carrying size, SHA-256 hash, signing fingerprint and SDK bounds.

What is the F-Droid Open Source Android Apps dataset?

One catalog of every free-software Android app that survives curation. The main F-Droid repository currently indexes 4,247 applications, and each entry is a dense record rather than a storefront card: a reverse-DNS package name as the key, an SPDX license identifier, the upstream source-code location, issue tracker and homepage, category assignments, epoch-millisecond added and lastUpdated timestamps, author name and email, and localized name/summary/description/whatsNew blocks per language - 70+ locales observed across the catalog.

Beneath each app sits its full APK inventory. Every published build carries a version name and code, byte size, SHA-256 checksum, signing certificate fingerprint, minimum and target Android SDK levels, native ABI architectures and the complete requested-permission array. 856 apps also carry an antiFeatures array flagging dependencies on non-free services - the kind of supply-chain signal that storefront-derived datasets simply do not expose.

Datadory delivers this as an application software dataset you can request a sample of today: app-level records, version-level sub-records, or both joined on package name.

What does a sample row look like?

Three shapes cover the catalog - one app-level record, one with localization, one version-level sub-record:

packageName          : org.fdroid.fdroid
license              : copyleft family, SPDX identifier
authorName           : F-Droid
categories           : ["App Store & Updater", "System"]
suggestedVersionName : 1.23.2
added                : 1295222400000

packageName          : com.github.ashutoshgngwr.tenbitclockwidget
license              : copyleft family, SPDX identifier
summary              : A beautiful BCD clock for your home screen
categories           : ["Clock"]
added                : 1601596800000
lastUpdated          : 1696789501000

packageName          : InfinityLoop1309.NewPipeEnhanced
versionName          : 5.2.5
versionCode          : 110604
size                 : 32087999
minSdkVersion        : 23
targetSdkVersion     : 36
nativecode           : ["arm64-v8a"]

Note what the third shape buys you: a single row proves which Android API level a build targets, whether it ships arm64 native code, and how many bytes it weighs - facts that let you chart SDK adoption or ABI fragmentation across all 4,247 catalogs' worth of builds without scraping a single binary.

What fields does the dataset include?

21 verified fields split across two levels: app-level attributes that describe the project, and version-level attributes that describe each published APK. The dictionary below is the schema Datadory delivers; confidence on every definition is verified against the live index.

What does coverage look like across geography, time and granularity?

Geography - global free-and-open-source Android ecosystem. There is no country partition; instead each app carries localized metadata in 70+ languages inside its own record, so locale coverage is per-app rather than geographic.

Temporal - a rolling current-state catalog with two timestamps per app (added, lastUpdated) plus per-APK publication history. added values in the sample rows alone span January 2011 to October 2020, and the full catalog reaches back to the repository's earliest days. Removed packages are not part of the main index - an archive tier exists for older builds.

Granularity - one record per application plus one sub-record per published APK version. With 4,247 apps each holding their complete build inventory, the version-level table runs well past the app count; that two-level grain is what makes SDK-target and permission-drift analysis possible.

How is the data delivered?

API, files, or your warehouse. Daily, weekly, or hourly.

Who uses this data, and for what?

  • Open-source compliance and license auditing - every app declares an SPDX identifier, so license mix across a device fleet, an SDK dependency tree or a market segment can be computed exactly rather than guessed from descriptions.
  • Android platform research - minSdkVersion and targetSdkVersion on every published build turn into time series of API-level adoption, and nativecode ABIs quantify the arm64 migration build by build.
  • Security and supply-chain analysis - permission arrays per APK plus antiFeatures flags on 856 apps give a screening surface for tracking-sensitive or non-free-service-dependent software before it ships.
  • Market and ecosystem mapping - category assignments, author emails and upstream repo locations let analysts segment the FOSS app economy by domain, maintainer and development activity (lastUpdated cadence).
  • App-store benchmarking - compare the FOSS catalog's permission posture and metadata openness against proprietary-store datasets such as the Google Play Store web catalog to quantify how much metadata openness differs between distribution channels.

Which personas get the most value?

Data scientists get a clean two-table join - apps keyed by packageName, builds keyed by packageName plus versionCode - sized for real analysis without cleanup theater. Competitive-intel and product teams get a public catalog whose every field is structured, useful for positioning feature checklists or tracking when rival categories go quiet. Developers and builders get machine-readable license, permission and ABI fields that drop straight into dependency policy engines. Journalists and academics get verifiable counts - 4,247 apps, 856 anti-flagged - citable at record level.

What should I know before requesting a sample?

Three things worth knowing upfront. First, this is a current-state catalog: it answers "what exists now and what changed recently," not "reconstruct the 2019 catalog" - historical depth comes from the per-record timestamps, not archived snapshots. Second, the HTML directory front-end shows category previews rather than a complete paginated listing, so bulk enumeration genuinely requires the structured feed - which is precisely what Datadory normalizes and delivers. Third, some third-party write-ups cite an index path that returns nothing; the working bulk indexes are the signed v1 and v2 files, and our pipeline already handles that disambiguation for you.

Field dictionary

Every field below is documented against real records. The full dictionary ships with the sample.

Field dictionary - 21 verified fields across app-level and version-level records
fieldtypedefinitionexample
packageNamestringAndroid application ID (reverse-DNS package name) used as the unique key.org.fdroid.fdroid
licensestringSPDX license identifier declared by the project; present on every record.SPDX identifier, e.g. copyleft family
categoriestextCategory assignments such as System, Internet or Multimedia.["App Store & Updater", "System"]
antiFeaturestextFlags for undesirable traits such as NonFreeNet or Ads; present on 856 apps.["NonFreeNet"]
addedintegerEpoch milliseconds when the app was first added to the repo.1295222400000
lastUpdatedintegerEpoch milliseconds of the most recent package publication.1696789501000
suggestedVersionNamestringVersion string recommended for installation.1.23.2
suggestedVersionCodestringNumeric Android versionCode recommended for installation.1023052
authorNamestringUpstream developer or team name.F-Droid
localizedtextPer-locale block with name, summary, description, whatsNew, icon, featureGraphic and screenshot filenames; 70+ locales observed.
versionNamestringHuman-readable version string of an individual APK.2.0-rc0
versionCodeintegerMonotonic numeric Android version code of an APK.2000040
sizeintegerAPK file size in bytes.32087999
hashstringSHA-256 checksum of the APK (hashType field confirms the algorithm).
signerstringSHA-256 fingerprint of the APK signing certificate.
minSdkVersionintegerMinimum supported Android SDK level.23
targetSdkVersionintegerTarget Android SDK level of the build.36
uses-permissiontextArray of Android permissions requested by the APK.

Questions buyers ask

How many apps are in the dataset?

The main repository indexes 4,247 applications, each delivered with its complete published-build inventory as version-level sub-records. Counts are verified against the signed bulk index at delivery time, so your sample reflects the live catalog rather than a stale snapshot.

Does every app have a license field?

Yes - an SPDX license identifier is a curation criterion, not an optional column, so every record carries one; the sample rows show copyleft-family identifiers on both entries that declare a license. That completeness is why the dataset supports fleet-wide or segment-wide license-mix calculations without imputation.

What are anti-features and how many apps have them?

Anti-features flag undesirable traits such as NonFreeNet - a dependency on a non-free network service - or advertising. 856 of the 4,247 apps carry an antiFeatures array, which makes it a usable filter for security reviews and privacy-screening pipelines.

Can I track one app's release history over time?

Per app you get suggestedVersionName and suggestedVersionCode plus one sub-record per published APK with its own version name, code, size, hash and SDK levels. lastUpdated timestamps show publishing cadence, so release-velocity comparisons across authors or categories compute directly.

How current is the data?

The catalog is a rolling current-state feed regenerated on each repository update cycle, and Datadory delivers it daily, weekly, or hourly depending on what your pipeline needs. Per-app added and lastUpdated timestamps ride along on every record for your own recency filters.

Is non-English metadata included?

Yes. Each app entry contains a localized block per language with name, summary, description, whatsNew text and graphic/screenshot references - 70+ locales observed across the catalog. Locale coverage varies by app because maintainers author translations, so it is per-record, not uniform.

How does this differ from Google Play Store datasets?

Play Store datasets describe commercial listings with ratings and install bands; this dataset describes a curated free-software catalog where license, source-code location, per-build hashes, signer fingerprints and anti-feature flags are first-class fields. The two complement each other for channel-comparison studies.

What can the SDK-level fields tell me?

Every published APK records minSdkVersion and targetSdkVersion, so you can measure how quickly the FOSS ecosystem adopts new Android API levels, find apps still targeting obsolete ones, or set minimum-version policy for a managed fleet based on evidence rather than anecdotes.

See the rows before you pay anything.

Name this dataset and we send real records from it — scoped to the fields you asked for.

See pricing