LinuxPhoneApps JSON API Documentation

Overview

The LinuxPhoneApps.org API provides access to information about mobile applications for Linux phones such as the PinePhone, Librem 5, and other Linux mobile devices. This document describes the structure and usage of the JSON API endpoint.

API Endpoint

https://linuxphoneapps.org/api/apps.json

This endpoint returns a JSON array containing mobile applications with their metadata.

Response Format

The API returns a JSON array where each element represents a mobile application. Each application object has the following structure:

App Object

Each app in the array has the following properties:

Basic Information

FieldTypeDescription
titleStringThe name of the application
descriptionStringShort description of the application
contentStringDetailed description of the application
dateStringPublication date (YYYY-MM-DD format)
updatedStringLast update date (YYYY-MM-DD format)
aliasesArrayList of URL aliases for the application
content_sourceStringURL to the source of the content description

Extended Information (extra object)

The extra object contains additional metadata about the application:

FieldTypeDescription
app_idStringApplication identifier (typically in reverse-domain notation)
feed_entry_idStringUnique identifier for the feed entry
all_features_touchBooleanWhether all features are accessible via touch interface
intended_for_mobileBooleanWhether the application is intended for mobile devices
reported_byStringUser who reported/added the application
updated_byStringHow the application was last updated
FieldTypeDescription
repositoryStringURL to the application's source code repository
homepageStringURL to the application's homepage
bugtrackerStringURL to the application's bug tracker
donationsStringURL for making donations to the project
translationsStringURL to the application's translation resources
appstream_xml_urlStringURL to the application's AppStream metadata
summary_source_urlStringURL to the source of the summary

Distribution Properties

FieldTypeDescription
flathubStringURL to the application on Flathub
flatpak_linkStringURL to the Flatpak reference file
flatpak_recipeStringURL to the Flatpak build recipe
snapcraftStringURL to the application on Snapcraft
snap_linkStringURL to the Snap package
snap_recipeStringURL to the Snap build recipe
appimage_x86_64_urlStringURL to the x86_64 AppImage
appimage_aarch64_urlStringURL to the ARM64 AppImage

Visuals

FieldTypeDescription
svg_icon_urlStringURL to the application's SVG icon
non_svg_icon_urlStringURL to the application's non-SVG icon
screenshotsArrayList of screenshot URLs
screenshots_imgArrayList of screenshot image objects
scale_to_fitStringScaling information for the application

Repository Information

FieldTypeDescription
latest_repo_commitStringDate of the latest commit to the repository
repo_created_dateStringDate when the repository was created
more_informationArrayAdditional information links
repologyArrayPackage names in Repology

Taxonomies

The taxonomies object contains categorization information:

FieldTypeDescription
app_authorArrayList of application authors
categoriesArrayApplication categories (e.g., "image editing", "note taking")
frameworksArrayList of frameworks used (e.g., "GTK4", "libadwaita", "Flutter")
programming_languagesArrayList of programming languages used
build_systemsArrayList of build systems used
project_licensesArrayList of licenses used by the application
metadata_licensesArrayList of licenses for the application's metadata
freedesktop_categoriesArrayList of freedesktop.org categories
mobile_compatibilityArrayCompatibility ratings (1-5) for mobile devices
packaged_inArrayList of package repositories where the application is available
statusArrayCurrent status of the project (e.g., "released", "beta")
tagsArrayAdditional tags (e.g., "Flathub Mobile Collection")
backendsArrayBackend services used
servicesArrayServices provided by the application
requires_internetArrayInternet connectivity requirements

Example App Object

{
  "aliases": [
    "apps/page.kramo.sly/"
  ],
  "content": "A friendly image editor that requires no internet connection or preexisting expertise. Just some photos and have at it.\n\nThe app allows you to adjust attributes like brightness or contrast as well as add effects like a vignette or a border. It also allows you to flip, rotate and crop the image to your heart's desire. If you're a pro, you can even preview your edits on a histogram.\n\nWhen you're done, just save the photo with the quality settings of your choosing. You also get a choice in whether or not to keep metadata such as location information.",
  "content_source": "https://raw.githubusercontent.com/kra-mo/Sly/refs/heads/main/packaging/linux/page.kramo.Sly.metainfo.xml",
  "date": "2025-03-08",
  "description": "Edit your images easily",
  "extra": {
    "all_features_touch": true,
    "app_id": "page.kramo.Sly",
    "appimage_aarch64_url": "",
    "appimage_x86_64_url": "",
    "appstream_xml_url": "https://raw.githubusercontent.com/kra-mo/Sly/refs/heads/main/packaging/linux/page.kramo.Sly.metainfo.xml",
    "bugtracker": "https://github.com/kra-mo/sly/issues",
    "donations": "",
    "feed_entry_id": "https://linuxphoneapps.org/apps/page.kramo.sly/",
    "flathub": "https://flathub.org/apps/page.kramo.Sly",
    "flatpak_link": "https://flathub.org/apps/page.kramo.Sly.flatpakref",
    "flatpak_recipe": "https://raw.githubusercontent.com/kra-mo/Sly/refs/heads/main/packaging/linux/page.kramo.Sly.yml",
    "homepage": "https://github.com/kra-mo/sly",
    "intended_for_mobile": true,
    "latest_repo_commit": "2025-01-08",
    "more_information": [
      "https://fosstodon.org/@pocketvj/114107620887339195"
    ],
    "non_svg_icon_url": "",
    "repo_created_date": "2024-08-30",
    "repology": [
      "sly"
    ],
    "reported_by": "1peter10",
    "repository": "https://github.com/kra-mo/sly",
    "scale_to_fit": "",
    "screenshots": [
      "https://raw.githubusercontent.com/kra-mo/sly/main/packaging/linux/screenshots/1.png",
      "https://raw.githubusercontent.com/kra-mo/sly/main/packaging/linux/screenshots/2.png",
      "https://raw.githubusercontent.com/kra-mo/sly/main/packaging/linux/screenshots/3.png"
    ],
    "screenshots_img": [],
    "snap_link": "",
    "snap_recipe": "",
    "snapcraft": "",
    "summary_source_url": "https://raw.githubusercontent.com/kra-mo/Sly/refs/heads/main/packaging/linux/page.kramo.Sly.metainfo.xml",
    "svg_icon_url": "https://raw.githubusercontent.com/kra-mo/Sly/refs/heads/main/packaging/linux/page.kramo.Sly.svg",
    "translations": "",
    "updated_by": "check_via_appstream"
  },
  "taxonomies": {
    "app_author": [
      "kramo"
    ],
    "backends": [],
    "build_systems": [
      "cmake"
    ],
    "categories": [
      "image editing",
      "image processing"
    ],
    "frameworks": [
      "Flutter",
      "libhandy"
    ],
    "freedesktop_categories": [
      "2DGraphics",
      "Graphics",
      "RasterGraphics",
      "Utility"
    ],
    "metadata_licenses": [
      "CC0-1.0"
    ],
    "mobile_compatibility": [
      "5"
    ],
    "packaged_in": [
      "flathub",
      "nix_stable_24_11",
      "nix_unstable"
    ],
    "programming_languages": [
      "Dart"
    ],
    "project_licenses": [
      "GPL-3.0-or-later"
    ],
    "requires_internet": [],
    "services": [],
    "status": [
      "released"
    ],
    "tags": [
      "Flathub Mobile Collection"
    ]
  },
  "title": "Sly",
  "updated": "2025-03-31"
}

Usage Examples

Fetching all apps

fetch('https://linuxphoneapps.org/api/apps.json')
  .then(response => response.json())
  .then(apps => {
    console.log(`Total apps: ${apps.length}`);
    console.log('Apps:', apps);
  });

Filtering apps by category

fetch('https://linuxphoneapps.org/api/apps.json')
  .then(response => response.json())
  .then(apps => {
    // Filter apps by category
    const imageApps = apps.filter(app =>
      app.taxonomies.categories &&
      app.taxonomies.categories.includes('image editing')
    );
    console.log('Image editing apps:', imageApps);
  });

Finding apps with high mobile compatibility

fetch('https://linuxphoneapps.org/api/apps.json')
  .then(response => response.json())
  .then(apps => {
    // Find apps with high mobile compatibility (rating of 4 or 5)
    const highCompatibilityApps = apps.filter(app =>
      app.taxonomies.mobile_compatibility &&
      app.taxonomies.mobile_compatibility.some(rating => parseInt(rating) >= 4)
    );
    console.log('High compatibility apps:', highCompatibilityApps);
  });

Finding apps by framework

fetch('https://linuxphoneapps.org/api/apps.json')
  .then(response => response.json())
  .then(apps => {
    // Find GTK4 apps
    const gtk4Apps = apps.filter(app =>
      app.taxonomies.frameworks &&
      app.taxonomies.frameworks.includes('GTK4')
    );
    console.log('GTK4 apps:', gtk4Apps);
  });

Technical Implementation

The API is generated by a Python script available at:

https://framagit.org/linuxphoneapps/linuxphoneapps.frama.io/-/raw/main/checkers/export.py

This script processes the LinuxPhoneApps.org whenever the site is updated and generates the JSON API, ensuring it stays current with the main website.

Rate Limiting and Usage

Please be considerate when using this API. Implement caching and avoid making excessive requests in a short period. The API does not currently enforce rate limits, but respectful usage ensures it remains available for everyone.

Error Handling

The API returns standard HTTP status codes:

  • 200: Success
  • 404: API endpoint not found
  • 500: Server error

License and Attribution

The data provided by this API is available under Creative Commons licenses. When using this data, please attribute LinuxPhoneApps.org as the source.

Feedback and Contributions

For feedback on the API and technical contributions to the LinuxPhoneApps.org project, see our information on how to get in touch and contribute.

Edit this page on Framagit