{"id":45105003,"url":"https://github.com/windsor-ai/pywindsorai","last_synced_at":"2026-02-19T21:58:35.320Z","repository":{"id":52833873,"uuid":"358259713","full_name":"windsor-ai/pywindsorai","owner":"windsor-ai","description":"Fetching markeding data such as Google Ads, Facebook Ads, Twitter Ads, and more in no time using the Windsor.ai API","archived":false,"fork":false,"pushed_at":"2022-11-02T09:48:03.000Z","size":44,"stargazers_count":17,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-28T01:24:30.529Z","etag":null,"topics":["facebookads","googleads","tiktokads","twitterads"],"latest_commit_sha":null,"homepage":"https://windsor.ai/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/windsor-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-15T12:57:06.000Z","updated_at":"2025-10-03T22:26:08.000Z","dependencies_parsed_at":"2022-08-22T13:50:47.598Z","dependency_job_id":null,"html_url":"https://github.com/windsor-ai/pywindsorai","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/windsor-ai/pywindsorai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/windsor-ai%2Fpywindsorai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/windsor-ai%2Fpywindsorai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/windsor-ai%2Fpywindsorai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/windsor-ai%2Fpywindsorai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/windsor-ai","download_url":"https://codeload.github.com/windsor-ai/pywindsorai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/windsor-ai%2Fpywindsorai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29634584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T18:02:07.722Z","status":"ssl_error","status_checked_at":"2026-02-19T18:01:46.144Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["facebookads","googleads","tiktokads","twitterads"],"created_at":"2026-02-19T21:58:34.427Z","updated_at":"2026-02-19T21:58:35.314Z","avatar_url":"https://github.com/windsor-ai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pywindsorai\n\n`pywindsorai` is a python package makes it easy to get marketing data from any platform like facebook, google ads, bing into python.\n\n[Windsor.ai](https://windsor.ai/) allows to get marketing data from any platform. It simplifies the complexity of dealing with multiple platforms, unlocking unified, valuable information in a format that matters to you. For more details checkout [onboard.windsor.ai](https://onboard.windsor.ai/).\n\n## Features\n\n✅ Easy access to marketing data via windsor.ai APIs\n\n✅ Lightweight (single dependency - [requests](https://pypi.org/project/requests/))\n\n✅ Supports both python 2.7+ and 3\n\n## Supported marketing and platforms\n\n✅ Google Analytics\n\n✅ Google Ads\n\n✅ Facebook Ads\n\n✅ Facebook organic\n\n✅ Bing Ads\n\n✅ Linkedin Ads\n\n✅ Hubspot\n\n✅ Salesforce\n\n✅ Google search console\n\n✅ Criteo\n\n✅ Snapchat\n\n✅ Tiktok\n\n✅ Appnexus\n\n✅ Campaign Manager\n\n✅ Twitter\n\n✅ Awin\n\n✅ Adroll\n\n✅ Shopify\n\n✅ Klaviyo\n\n✅ Airtable\n\n✅ Intercom\n\n✅ Zoho\n\n✅ Idealo\n\n✅ Pinterest\n\n✅ Appsflyer\n\n✅ Adobe\n\n\n\n\n\n## Usage\n\n### Installation\n\n```sh\npip install pywindsorai\n```\n\n### Registration\n\nYou need to get a free API key to access windsor.ai's APIs. Register your account first and add a datasource like facebook ads and then get the API key. For more details check out our official [API documentation](https://windsor.ai/api-documentation/) and [this article](https://windsor.ai/api-fields/). Get the API key at https://onboard.windsor.ai \n\n### Minimal Example\n\n```python\nfrom pywindsorai.client import Client\nfrom pywindsorai.enums import LAST_7D\nfrom pywindsorai.enums import FIELD_SOURCE, FIELD_CAMPAIGN, FIELD_CLICKS\n\napi_key = 'xxx'  # Get it from your windsor.ai account. It's recommended to store and get this securely, for example an env variable.\n\n# Setup a client object with the API key\nclient = Client(api_key)\n\n# Call the /connectors API.\ncampaign_clicks = client.connectors(date_preset=LAST_7D, fields=[FIELD_SOURCE, FIELD_CAMPAIGN, FIELD_CLICKS])\n\n# can also be run like:\ncampaign_clicks = client.connectors(date_preset='last_7d', fields=['date','clicks','spend'])\n\n# Response will be a python dict (parsed from the json response recieved).\nprint(campaign_clicks)\n\n[\n  {'date': '2021-04-15', 'clicks': 3, 'spend': 8.139999999999999},\n  {'date': '2021-04-15', 'clicks': 2, 'spend': 6.51},\n  {'date': '2021-04-15', 'clicks': 1, 'spend': 3.88},\n  {'date': '2021-04-15', 'clicks': 4, 'spend': 3.275311},\n  {'date': '2021-04-15', 'clicks': 6, 'spend': 1.408321}\n  ],\n\n# Get Google Ads data only\ncampaign_clicks = client.connectors(\n    connector=\"google_ads\",\n    date_preset=LAST_7D,\n    fields=[\"account_name\", \"campaign\", \"clicks\", \"datasource\", \"source\", \"spend\"]\n)\n\n# Get Facebook Ads data only\ncampaign_clicks = client.connectors(\n    connector=\"facebook\",\n    date_preset=LAST_7D,\n    fields=[\"account_name\", \"campaign\", \"clicks\", \"datasource\", \"source\", \"spend\"]\n)\n\n# Get list of all possible connectors (i.e: Google Ads, Facebook Ads, Twitter, Tik Tok etc.)\nlist_connectors = client.list_connectors\nprint(list_connectors)\n\n['adform', 'adobe', 'adroll', 'all', 'amazon_ads', 'amazon_s3', 'amazon_sp', 'apple_search_ads', 'appnexus', 'appsflyer', 'awin', 'bing', 'cm360', 'criteo' 'currency_conversion', 'daisycon', 'dv360', 'facebook', 'facebook_leads', 'facebook_organic', 'gmailcsv', 'google_ad_manager', 'google_ads', 'google_pagespeed', 'googleanalytics', 'googleanalytics4', 'googlesheets', 'hubspot', 'idealo', 'instagram', 'klaviyo', 'linkedin', 'linkedin_organic', 'mailchimp', 'outbrain', 'pinterest', 'quora', 'reddit', 'rtbhouse', 'salesforce', 'searchconsole', 'sftp', 'shopify', 'snapchat', 'stripe', 'taboola', 'tiktok', 'twitter', 'twitter_organic', 'vertaa', 'zoho']\n\n# Sample with date specific ranges.\ndataset_with_ranges = client.connectors(\n      date_from=\"2022-10-18\",\n      date_to=\"2022-10-20\",\n      fields=[\"account_name\", \"campaign\", \"clicks\", \"datasource\", \"source\", \"spend\", \"date\"]\n)\n```\n\n### List of fields\nThe full list of fields that the package accepts is given in https://windsor.ai/connector/all/. Fields can be common to all the connectors or specific for each company.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindsor-ai%2Fpywindsorai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwindsor-ai%2Fpywindsorai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwindsor-ai%2Fpywindsorai/lists"}