Skip to main content

quran-foundation-api

Official Python SDK for Quran Foundation APIs.

pip install quran-foundation-api
from quran_foundation import QuranClient

client = QuranClient(client_id="YOUR_CLIENT_ID", access_token="ACCESS_TOKEN")
chapters = client.list_chapters()
print(chapters)

Content and search

from quran_foundation import QuranClient

client = QuranClient(client_id="YOUR_CLIENT_ID", access_token="ACCESS_TOKEN")

chapter = client.get_chapter(1)
verses = client.get_verses_by_range("1:1", "1:7", translations="131")
translations = client.list_translations()
results = client.search("mercy", mode="advanced", params={"size": 10})

Content resource sync

Mushafs and word-by-word translations can be included in content sync and fetched as resource snapshots:

changes = client.sync_resources(
    params={
        "bootstrap": True,
        "resources": "mushafs:1;word_by_word_translations:85",
    }
)
snapshot = client.get_word_by_word_translation_snapshot(85)
mushaf_snapshot = client.get_mushaf_snapshot(1)

Mushaf snapshots contain the layout metadata, pages, publicly distributable font assets, and words needed for offline use. The API also exposes approved, shareable word-translation resources; transliteration resources are excluded.

For endpoints that do not yet have a dedicated helper, use the service request helpers:

client.content_request("/verses/by_page/1", params={"translations": "131"})
client.search_request("/api/v1/search", params={"query": "mercy", "mode": "quick"})
client.user_request("/bookmarks", params={"page": 1})

User APIs

Use signed-in User API helpers with a user access token. Keep the token server-side.

profile = client.get_profile()
bookmarks = client.list_bookmarks()
client.create_bookmark({"verse_key": "2:255", "mushaf_id": 1})
client.update_preference({"key": "theme", "value": "dark"})

OAuth2 helpers

Use OAuth helpers on the server side. Never expose client_secret, access tokens, or refresh tokens to browser code.

from quran_foundation.oauth import build_authorization_url, create_pkce_pair, exchange_code

verifier, challenge = create_pkce_pair()
authorize_url = build_authorization_url(
    client_id="YOUR_CLIENT_ID",
    redirect_uri="https://your-app.com/callback",
    scope="openid offline_access user bookmark",
    state="random-state",
    code_challenge=challenge,
)

tokens = exchange_code(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
    code="CODE_FROM_CALLBACK",
    code_verifier=verifier,
    redirect_uri="https://your-app.com/callback",
)

Development

python -m pip install -e ".[dev]"
ruff check .
pytest
python -m build
twine check dist/*

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quran_foundation_api-0.1.2.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quran_foundation_api-0.1.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file quran_foundation_api-0.1.2.tar.gz.

File metadata

  • Download URL: quran_foundation_api-0.1.2.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quran_foundation_api-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c5f34c1ec3628894938d6bdc416253d239ef3e7df30974d8764053f05ca53112
MD5 fb2c0a3427fa68c559cb0602121e4870
BLAKE2b-256 cb7310ddcfed659e226ad044dbe146d589ea379bdb9f54d965f82ade730cdad8

See more details on using hashes here.

Provenance

The following attestation bundles were made for quran_foundation_api-0.1.2.tar.gz:

Publisher: publish.yml on quran/api-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quran_foundation_api-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for quran_foundation_api-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 39af75ddca80321533d6a157175dbb3b9a8dbc8a691bdcc08fc6d8da7b17aa63
MD5 e232a9baf0879ae78f179c096df13f04
BLAKE2b-256 bf9677265528488c4ad2996f5ba759500bca47bad8882aac5ab31421704f627a

See more details on using hashes here.

Provenance

The following attestation bundles were made for quran_foundation_api-0.1.2-py3-none-any.whl:

Publisher: publish.yml on quran/api-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.3.1

2 files

0.3.0

2 files

0.2.0

2 files

0.1.3

2 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page