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
Field | Type | Description |
---|---|---|
title | String | The name of the application |
description | String | Short description of the application |
content | String | Detailed description of the application |
date | String | Publication date (YYYY-MM-DD format) |
updated | String | Last update date (YYYY-MM-DD format) |
aliases | Array | List of URL aliases for the application |
content_source | String | URL to the source of the content description |
Extended Information (extra
object)
The extra
object contains additional metadata about the application:
Field | Type | Description |
---|---|---|
app_id | String | Application identifier (typically in reverse-domain notation) |
feed_entry_id | String | Unique identifier for the feed entry |
all_features_touch | Boolean | Whether all features are accessible via touch interface |
intended_for_mobile | Boolean | Whether the application is intended for mobile devices |
reported_by | String | User who reported/added the application |
updated_by | String | How the application was last updated |
URLs and Links
Field | Type | Description |
---|---|---|
repository | String | URL to the application's source code repository |
homepage | String | URL to the application's homepage |
bugtracker | String | URL to the application's bug tracker |
donations | String | URL for making donations to the project |
translations | String | URL to the application's translation resources |
appstream_xml_url | String | URL to the application's AppStream metadata |
summary_source_url | String | URL to the source of the summary |
Distribution Properties
Field | Type | Description |
---|---|---|
flathub | String | URL to the application on Flathub |
flatpak_link | String | URL to the Flatpak reference file |
flatpak_recipe | String | URL to the Flatpak build recipe |
snapcraft | String | URL to the application on Snapcraft |
snap_link | String | URL to the Snap package |
snap_recipe | String | URL to the Snap build recipe |
appimage_x86_64_url | String | URL to the x86_64 AppImage |
appimage_aarch64_url | String | URL to the ARM64 AppImage |
Visuals
Field | Type | Description |
---|---|---|
svg_icon_url | String | URL to the application's SVG icon |
non_svg_icon_url | String | URL to the application's non-SVG icon |
screenshots | Array | List of screenshot URLs |
screenshots_img | Array | List of screenshot image objects |
scale_to_fit | String | Scaling information for the application |
Repository Information
Field | Type | Description |
---|---|---|
latest_repo_commit | String | Date of the latest commit to the repository |
repo_created_date | String | Date when the repository was created |
more_information | Array | Additional information links |
repology | Array | Package names in Repology |
Taxonomies
The taxonomies
object contains categorization information:
Field | Type | Description |
---|---|---|
app_author | Array | List of application authors |
categories | Array | Application categories (e.g., "image editing", "note taking") |
frameworks | Array | List of frameworks used (e.g., "GTK4", "libadwaita", "Flutter") |
programming_languages | Array | List of programming languages used |
build_systems | Array | List of build systems used |
project_licenses | Array | List of licenses used by the application |
metadata_licenses | Array | List of licenses for the application's metadata |
freedesktop_categories | Array | List of freedesktop.org categories |
mobile_compatibility | Array | Compatibility ratings (1-5) for mobile devices |
packaged_in | Array | List of package repositories where the application is available |
status | Array | Current status of the project (e.g., "released", "beta") |
tags | Array | Additional tags (e.g., "Flathub Mobile Collection") |
backends | Array | Backend services used |
services | Array | Services provided by the application |
requires_internet | Array | Internet 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.