Ce projet vise à fournir une copie consultable et complète des publicités politiques sur la bibliothèque de publicités Facebook.
Depuis le 17.08.2023, il contient également des publicités diffusées dans l'UE ne datant pas de plus de cette date. Vous pouvez voir les champs supplémentaires ci-dessous.
Facebook fournit déjà toutes ces données via son interface web. Le problème est qu'il est difficilement consultable et donc sans réelle utilité pour l'analyse de la publicité politique. De plus, l'API est difficile d'accès et limitée à bien des égards.
Ces données sont déjà censées être publiques, cet ensemble de données contribue donc simplement à assurer la transparence que Facebook Meta souhaite offrir.
Site pour accéder en direct aux données : https://ad-archive.nexxxt.cloud
Les données sont chargées directement depuis leur API officielle.
Depuis la V3, les annonces sont explorées à l'aide d'une requête vide (*) dans tous les pays. Cette requête s'est avérée assez fiable et renvoie toutes les annonces de toutes les pages
Auparavant, les données étaient téléchargées par page_id obtenu à partir des rapports publicitaires. Celles-ci ne doivent inclure que des pages liées à la politique ou à des questions d'importance politique, mais toutes ne sont pas clairement signalées.
Parce que ces rapports contiennent des noms de page et des avertissements générés par l'utilisateur, certains noms ou avertissements peuvent être corrompus par des caractères étranges.
Une autre chose que j'ai réalisé est que certaines annonces (ou pages entières ?) ne sont temporairement (ou définitivement ?) pas consultables par le page_id qui les a publiées. Vous pouvez les identifier en vérifiant la quantité spécifiée d'annonces dans le rapport par rapport à la quantité réelle d'annonces chargées dans l'ensemble de données. Souvent, cela se traduit également par des pages qui semblent ne contenir aucune annonce. Vous pouvez les identifier grâce au champ msg vide (msg="").
Un autre problème est que les publicités des pages page_id=0 ne peuvent pas être explorées par leur page_id. Ceux-ci font souvent simplement référence à un « utilisateur Instagram d'un certain identifiant » ou à d'autres utilisateurs de la plate-forme Facebook. Jetez un œil aux rapports que j’ai utilisés pour plus d’informations. MISE À JOUR : Ils sont explorés à l'aide de l'astuce de requête vide. De plus, j'ai réalisé plus tard que lors de l'exploration, des sites très volumineux sont vides alors qu'ils devraient contenir des publicités.
En fin de compte, le nombre d'annonces dans cet ensemble de données était inférieur à ce qu'il devrait être selon les rapports. Cela devrait être assez précis maintenant.
identifiant("_id" dans le tableau)
ad_creation_time
ad_creative_bodies
ad_creative_link_captions
ad_creative_link_descriptions
ad_creative_link_titles
ad_delivery_start_time
ad_delivery_stop_time
langues
page_id
nom_page
éditeur_plateformes
signatures
devise
livraison_par_région
répartition_démographique
taille_audience_estimée
impressions
dépenser
emplacements_cibles
cible_genre
cible_ages
eu_total_reach
bénéficiaires_payeurs
age_country_gender_reach_breakdown
rendu (définit si la version rendue est disponible) (OBSERVÉ depuis la V5 !)
Rendering_started (utilisé pour mettre en file d'attente les publicités pour le rendu) (OBSERVÉ depuis la V5 !)
perdu (Vrai, si l'annonce n'a pas été trouvée lors du rendu)
_last_updated (contient la date à laquelle l'annonce a été explorée/mise à jour pour la dernière fois)
Le champ ad_snapshot_url
n'est pas exploré car il s'agit simplement d'une combinaison de l'identifiant et de votre jeton d'accès :
https://www.facebook.com/ads/archive/render_ad/?id=<id>&access_token=<token>
Pour accéder à l'annonce si vous n'avez pas de jeton d'accès, vous pouvez utiliser ce lien :
https://www.facebook.com/ads/library/?id=<id>
Pour afficher l'annonce sans jeton d'accès, vous pouvez utiliser mon travailleur cloudflare pour proxy les données : https://render-facebook-ad.lejo.workers.dev/<id>
Vous devrez peut-être désactiver certains paramètres de confidentialité en tant que navigateurs ( comme Firefox) bloquent les requêtes Facebook intersites.
Pour plus d'informations, consultez le fichier example.json
ou la description des champs sur l'API officielle.
Le script du dossier preview_renderer
est utilisé pour prendre une capture d'écran des éléments pertinents de l' ad_snapshot_url
de chaque annonce. La base de données séparée render_queue
est utilisée pour mettre en file d'attente les annonces pour le rendu. Après le rendu, les images sont stockées pendant un mois mais peuvent être restituées à tout moment.
Après le rendu, vous pouvez les visualiser ici : https://facebook-ad-previews.nexxxt.cloud/<id>.jpg
Vous pouvez accéder à tout moment aux données actuelles stockées pour une annonce sur : https://ad-archive.nexxxt.cloud/ad/<AD_ID>
. Ce point de terminaison peut également être utilisé pour les téléchargements automatisés d'informations publicitaires et permet les demandes d'origine croisée. Veuillez noter que l'exploration et l'ajout de nouvelles annonces à la base de données peuvent prendre un certain temps.
Le 17.08.2023, toutes les annonces de l'UE depuis cette date sont apparues dans la base de données. Sa taille est désormais plus du double de celle d'avant. Les annonces européennes contiennent des champs supplémentaires, comme indiqué ci-dessus.
Les champs utilisés pour le rendu ont été supprimés (sauf perdus) et sont désormais traités séparément.
Télécharger les métadonnées (02.11.2023) kaggle
Télécharger les métadonnées (01.03.2024) kaggle
Télécharger la base de données dans un fichier JSON et la compresser m'a pris de plus en plus de temps. C'est pourquoi je suis passé aux fichiers BSON compressés (bson.gz). Ceux-ci sont natifs de mongodb et peuvent être créés beaucoup plus rapidement et de manière plus fiable.
Ceux-ci sont créés à l'aide de l'outil mongodump et peuvent être chargés dans votre propre mongodb à l'aide de mongorestore. Vous pouvez également les convertir en fichiers json normaux à l'aide de leur outil bsondump.
En plus de cela, vous pouvez utiliser le fichier de métadonnées pour restaurer les index utilisés dans ma base de données.
Certains de ces ensembles de données sont également disponibles sur Kaggle.
Télécharger les métadonnées (07.09.2022)
Télécharger les métadonnées (22.10.2022) kaggle
Télécharger les métadonnées (30.12.2022) kaggle
Télécharger les métadonnées (15.03.2023) kaggle
Télécharger les métadonnées (06.08.2023) kaggle
Les annonces ont été explorées à l'aide de la requête vide (*) dans tous les pays. Devrait en théorie désormais contenir toutes les annonces de la bibliothèque.
Champ rendered
ajouté pour les aperçus.
Pas de fichier de collection todo.json
car les statistiques sont erronées et n'étaient pas pertinentes pour cette exploration.
Télécharger (09.02.2022)
Télécharger (03.04.2022)
Télécharger (26.05.2022)
V2 et versions antérieures :
todo.json
-Fichier : basé sur les rapports publicitaires et contient toutes les pages analysées avec l'horodatage de la dernière exploration et le curseur de pagination (après)
Contient également des statistiques de page pour plusieurs clauses de non-responsabilité et pays. Les grandes pages devraient être terminées maintenant. Plusieurs rapports de différentes dates ont été utilisés pour la mise à jour.
Télécharger
J'ai d'abord exploré la bibliothèque allemande et américaine, puis j'ai décidé de créer une analyse complète.
Pour cette analyse, todo.json
contient un champ lang
spécifiant le rapport d'où provient la page. Les rapports ont tous été automatiquement chargés dans la base de données à l'aide du script import_reports.py
.
Télécharger les rapports
Les données de ces pays sont également disponibles sur kaggle.com
Allemagne (DE) Télécharger le rapport
États-Unis (États-Unis) Télécharger le rapport
Auparavant, l'exploration était effectuée sur la base des rapports officiels de Facebook. Je les ai chargés dans un mongodb et l'ancien script crawl.py
a extrait les données de l'API et les a ajoutées à la collection d'annonces. Maintenant, j'utilise simplement l'astuce de requête vide (*) pour télécharger des annonces de toutes les pages de tous les pays, voir : crawlall.py
Pour ce faire, vous avez besoin d’un jeton d’accès (ou mieux de plusieurs). Le script gérera automatiquement la limitation de débit, mais vous ne pourrez peut-être pas exploiter plusieurs threads si vous n'avez pas suffisamment de jetons.
Pour plus d'informations, jetez simplement un œil au fichier crawlall.py
.
Si vous avez plus d'informations concernant l'API/la bibliothèque de Facebook ou si vous pensez qu'il y a des problèmes juridiques avec la distribution de ces données, veuillez me contacter : [email protected] ou ouvrez un problème !