Skip to main content

Fetches data from Google Search Console and stores it into SQLite

Project description

gsc-api-handler

gsc-api-handler is a lightweight Python package designed to authorize and fetch data from the Google Search Console API, storing it directly into a local SQLite database.

🚀 Features

  • 🔐 OAuth 2.0 user authorization with automatic token refresh
  • 📊 Data fetching with pagination support
  • 🗃️ Stores GSC metrics (clicks, impressions, CTR, position) into SQLite
  • 🧩 Easily integrable with Django or other Python-based projects
  • ✅ Minimal dependencies and clean, modular structure

📦 Installation

Install the package in editable mode during development:

pip install gsc-api-handler

You may want to use a virtual environment:

python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
pip install gsc-api-handler

⚙️ Configuration

This package uses python-decouple to manage environment variables.

  1. Create a .env file in the project root, outside the src/ folder.
  2. Add the following variables:
GSC_CLIENT_SECRET=gsc_credentials/client_secret.json
GSC_TOKEN_PATH=gsc_credentials/token.pickle
  1. Create a gsc_credentials/ folder and place your client_secret.json file inside.

The token will be created automatically after successful authentication.

If .env is missing, default values client_secret.json and token.pickle will be used from the current working directory.


✅ Usage Example

Here is an example script (test_fetch.py) that uses the package to fetch GSC data and store it in SQLite:

from gsc_api_handler import fetch_and_store_gsc_data
from decouple import config 
from pathlib import Path


CLIENT_SECRETS_FILE = Path(config("GSC_CLIENT_SECRET", default="client_secret.json"))
TOKEN_FILE = Path(config("GSC_TOKEN_PATH", default="token.pickle"))

# BASE_DIR = Path(__file__).resolve().parent # in test_fetch.py 
# CLIENT_SECRETS_FILE = BASE_DIR / "gsc_credentials" / "client_secret.json"
# TOKEN_FILE = BASE_DIR / "gsc_credentials" / "token.pickle"

rows = fetch_and_store_gsc_data(
    site_url='sc-domain:yourdomain.com',
    db_path='gsc_yourdomain.sqlite',
    creds_path=CLIENT_SECRETS_FILE, 
    token_path=TOKEN_FILE,          
    dimensions=['query', 'page', 'date'],
    start_date='2024-06-01',
    end_date='2024-06-15'
)

print(f"{rows} rows fetched and saved.")

📁 Output Table Format

The gsc_data table contains:

Column Type Description
country TEXT User country
device TEXT Device used
query TEXT Search query
page TEXT Landing page
date TEXT Date of the visit
clicks INTEGER Number of clicks
impressions INTEGER Number of impressions
ctr REAL Click-through rate
position REAL Average position in search

Table name and dimensions are fully configurable.


📚 Requirements

This package depends on:

  • google-api-python-client
  • google-auth
  • google-auth-oauthlib
  • python-dateutil
  • python-decouple

All dependencies are listed in pyproject.toml.


📝 License

This project is licensed under the MIT License


✨ Author

Developed by Miki Zivkovic
© 2025-present

Project details


Download files

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

Source Distribution

gsc_api_handler-1.0.5.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

gsc_api_handler-1.0.5-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file gsc_api_handler-1.0.5.tar.gz.

File metadata

  • Download URL: gsc_api_handler-1.0.5.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gsc_api_handler-1.0.5.tar.gz
Algorithm Hash digest
SHA256 fed817e19dec2ead208a1a7ec952e86a10094c87548e12d52321b365bee7cf64
MD5 989f590c714e01997977622d2110fe73
BLAKE2b-256 d79b7cdb995a7c882c3e1cef40935264d0885ab2c03c298d343cc78cf27b8b43

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsc_api_handler-1.0.5.tar.gz:

Publisher: publish.yml on oksidans/gsc-api-handler

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

File details

Details for the file gsc_api_handler-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for gsc_api_handler-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 c7438da4dd515269e5d78a825ded81cbdaa38926801b07774cd382ddfb95e9a2
MD5 4b4e4503f86717f58ceaf35ddb093762
BLAKE2b-256 f57aa1262e78a4c24a757ff768f7173c3f7a733c8291008816b3714fe5c8e19b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsc_api_handler-1.0.5-py3-none-any.whl:

Publisher: publish.yml on oksidans/gsc-api-handler

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page