Back to plugin list


The CloudQuery Gandi plugin pulls configuration out of Gandi resources and loads it into any supported CloudQuery destination



Latest version




Date Published

Price per 1M rows

Starting from $15

monthly free quota

1M rows

Set up process

brew install cloudquery/tap/cloudquery

1. Download CLI and login

See installation options

2. Create source and destination configs

Plugin configuration

cloudquery sync gandi.yml postgresql.yml

3. Run the sync

CloudQuery sync


The CloudQuery Gandi plugin pulls configuration out of Gandi resources and loads it into any supported CloudQuery destination (e.g. PostgreSQL, BigQuery, Snowflake, and more).

Example Configuration

kind: source
  name: gandi
  path: cloudquery/gandi
  registry: cloudquery
  version: "v3.3.10"
  tables: ["*"]
  destinations: ["postgresql"]

    # required
    api_key: "${GANDI_API_KEY}"


In order to fetch information from Gandi, cloudquery needs to be authenticated. An API key is required for authentication. Get your API key from Gandi's Account Settings Page.

Configuration Reference

This is the (nested) spec used by the Gandi source plugin.
  • api_key (string) (required)
    An API key to access Gandi resources. This can be generated from Gandi's Account Settings Page.
  • sharing_id (string) (optional)
    This is your Gandi Organization ID if you wish to limit the queries to a specific Gandi org.
  • gandi_debug (bool) (optional) (default: false)
    Enables verbose logging of HTTP calls made by the underlying library.
  • endpoint_url (string, optional. Default:
    Endpoint URL to make the API requests to. To use the Gandi Sandbox API endpoint, set this to
  • timeout_secs (integer as seconds) (optional) (default: 300)
    Default timeout for each API request. Defaults to 5 minutes.
  • concurrency (integer) (optional) (default: 1000)
    Number of resources to sync in parallel.

Query Examples

Detect domain registrations that will expire soon

select fqdn, dates->>'registry_ends_at' as registry_ends_at, date_trunc('day', (dates->>'registry_ends_at')::timestamp - current_timestamp) as days_left from gandi_domains where ((dates->>'registry_ends_at')::timestamp - interval '90 day') < current_timestamp order by 1;

Get domains in Gandi LiveDNS

select fqdn, current, nameservers from gandi_domain_live_dns order by 1;

Get a list of glue records

select fqdn, name, ips from gandi_domain_glue_records order by 1, 2;

Get list of LiveDNS domains which don't have automatic snapshots enabled

select d.fqdn from gandi_livedns_domains d left join gandi_livedns_snapshots s on s.fqdn=d.fqdn and s.automatic where s.fqdn is null;

Inspect LiveDNS snapshots for a given domain

select count(1) as number_of_snapshots, max(created_at) as last_snapshot_at from gandi_livedns_snapshots where fqdn = '';

Subscribe to product updates

Be the first to know about new features.