Este projeto tem como objetivo fornecer uma cópia pesquisável e completa dos anúncios políticos na Biblioteca de Anúncios do Facebook
Desde 17.08.2023, também contém anúncios veiculados na UE que não sejam anteriores a essa data. Você pode ver os campos extras abaixo.
O Facebook já fornece todos esses dados por meio de sua interface web. O problema com isso é que dificilmente é pesquisável e, portanto, não tem utilidade real para análise de propaganda política. Além disso, a API é difícil de acessar e limitada de várias maneiras.
Esses dados já devem ser públicos, portanto, esse conjunto de dados está apenas ajudando a fornecer a transparência que o Facebook Meta deseja oferecer.
Site to Live acesse os dados: https://ad-archive.nexxxt.cloud
Os dados são carregados diretamente de sua API oficial.
Desde a V3, os anúncios são rastreados usando uma consulta vazia (*) em todos os países. Esta consulta revelou-se bastante confiável e retorna todos os anúncios de todas as páginas
Anteriormente, os dados eram baixados por page_id obtidos nos relatórios de anúncios. Estas devem incluir apenas páginas relacionadas com política ou questões de importância política, mas nem todas estão claramente sinalizadas.
Porque esses relatórios contêm nomes de páginas gerados pelo usuário e isenções de responsabilidade, alguns nomes ou isenções de responsabilidade podem estar corrompidos por caracteres estranhos.
Outra coisa que percebi é que alguns anúncios (ou páginas inteiras?) Não podem ser pesquisados temporariamente (ou permanentemente?) pelo page_id que os publicou. Você pode identificá-los verificando a quantidade especificada de anúncios no relatório em comparação com a quantidade real carregada de anúncios no conjunto de dados. Freqüentemente, isso também resulta em páginas aparentemente sem anúncios. Você pode identificá-los pelo campo msg estar vazio (msg="").
Mais um problema é que os anúncios das páginas page_id=0 não podem ser rastreados por seu page_id. Muitas vezes, referem-se apenas a um “usuário do Instagram com algum ID” ou outros usuários da plataforma do Facebook. Dê uma olhada nos relatórios que usei para obter mais informações. ATUALIZAÇÃO: eles são rastreados usando o truque de consulta vazia. Mais tarde, também percebi que, ao rastrear sites muito grandes, eles ficam vazios, embora devam conter anúncios.
No final, isso resultou em anúncios neste conjunto de dados menores do que deveriam ser, de acordo com os relatórios. Deve ser bastante preciso agora.
id("_id" na tabela)
ad_creation_time
ad_creative_bodies
ad_creative_link_captions
ad_creative_link_descrições
ad_creative_link_titles
ad_delivery_start_time
ad_delivery_stop_time
idiomas
id_da_página
nome_da_página
editoras_plataformas
assinaturas
moeda
entrega_por_região
distribuição_demográfica
estimado_audience_size
impressões
gastar
locais_alvo
sexo_alvo
idades_alvo
eu_total_reach
beneficiário_pagadores
idade_país_gênero_reach_breakdown
renderizado (define se a versão renderizada está disponível) (OBSTO desde V5!)
rendering_started (usado para colocar os anúncios na fila para renderização) (OBSTO desde V5!)
perdido (Verdadeiro, se o anúncio não foi encontrado durante a renderização)
_last_updated (contém a data em que o anúncio foi rastreado/atualizado pela última vez)
O campo ad_snapshot_url
não é rastreado, pois é apenas uma combinação do ID e do seu token de acesso:
https://www.facebook.com/ads/archive/render_ad/?id=<id>&access_token=<token>
Para acessar o anúncio se você não tiver nenhum token de acesso, você pode usar este link:
https://www.facebook.com/ads/library/?id=<id>
Para realmente renderizar o anúncio sem um token de acesso, você pode usar meu trabalhador cloudflare para fazer proxy dos dados: https://render-facebook-ad.lejo.workers.dev/<id>
Talvez seja necessário desabilitar algumas configurações de privacidade como navegadores ( como o Firefox) bloqueiam solicitações do Facebook entre sites.
Para mais informações dê uma olhada no arquivo example.json
ou na descrição dos campos da API oficial.
O script da pasta preview_renderer
é usado para fazer uma captura de tela dos elementos relevantes do ad_snapshot_url
de cada anúncio. O banco de dados render_queue
separado é usado para enfileirar os anúncios para renderização. Após a renderização, as imagens são armazenadas por um mês, mas podem ser renderizadas novamente a qualquer momento.
Após a renderização, você pode visualizá-los aqui: https://facebook-ad-previews.nexxxt.cloud/<id>.jpg
Você pode acessar os dados atuais armazenados de um anúncio a qualquer momento em: https://ad-archive.nexxxt.cloud/ad/<AD_ID>
. Este endpoint também pode ser usado para downloads automatizados de informações de anúncios e permite solicitações de origem cruzada. Observe que pode levar algum tempo para que novos anúncios sejam rastreados e adicionados ao banco de dados.
Em 17.08.2023, todos os anúncios da UE desde essa data apareceram na base de dados. Agora é mais que o dobro do tamanho anterior. Os anúncios da UE contêm campos extras conforme especificado acima.
Os campos usados para renderização foram removidos (exceto os perdidos) e agora são tratados separadamente.
Baixar Metadados (02.11.2023) kaggle
Baixar metadados (01.03.2024) kaggle
Baixar o banco de dados em um arquivo JSON e compactá-lo demorava cada vez mais. É por isso que mudei para arquivos BSON compactados (bson.gz). Eles são nativos do mongodb e podem ser criados de maneira mais rápida e confiável.
Eles são criados usando a ferramenta mongodump e podem ser carregados em seu próprio mongodb usando o mongorestore. Você também pode convertê-los em arquivos json normais usando a ferramenta bsondump.
Além disso você pode usar o arquivo de metadados para restaurar os índices usados no meu banco de dados.
Alguns desses conjuntos de dados também estão disponíveis no kaggle.
Baixar metadados (07.09.2022)
Baixar Metadados (22.10.2022) kaggle
Baixar Metadados (30.12.2022) kaggle
Baixar Metadados (15.03.2023) kaggle
Baixar metadados (06.08.2023) kaggle
Os anúncios foram rastreados usando a consulta vazia (*) em todos os países. Em teoria, agora deveria conter todos os anúncios da biblioteca.
Campo rendered
adicionado para as visualizações.
Nenhum arquivo de coleção todo.json
porque as estatísticas estão erradas e não eram relevantes para este rastreamento.
Baixar (09.02.2022)
Baixar (03.04.2022)
Baixar (26.05.2022)
V2 e anteriores:
todo.json
-Arquivo: baseado nos relatórios de anúncios e contém todas as páginas rastreadas com o carimbo de data e hora do último rastreamento e o cursor de paginação (depois)
Também contém estatísticas de página para vários isenções de responsabilidade e países. Páginas grandes devem estar completas agora. Vários relatórios de datas diferentes foram usados para atualização.
Download
Primeiro rastreei a Biblioteca Alemã e dos EUA e depois decidi criar um rastreamento completo.
Para este rastreamento todo.json
contém um campo lang
especificando o relatório de onde a página veio. Os relatórios foram todos carregados automaticamente no banco de dados usando o script import_reports.py
.
Baixar relatórios
Os dados desses países também estão disponíveis em kaggle.com
Alemanha (DE) Baixar relatório
Relatório de download dos EUA (EUA)
Anteriormente, o rastreamento era feito com base nos relatórios oficiais do Facebook. Carreguei-os em um mongodb e o antigo script crawl.py
extraiu os dados da API e os adicionou à coleção de anúncios. Agora estou apenas usando o truque da consulta vazia (*) para baixar anúncios de todas as páginas de todos os países, veja: crawlall.py
Para fazer isso, você precisa de um token de acesso (ou melhor, múltiplo). O script lidará automaticamente com a limitação de taxa, mas talvez você não consiga extrair vários threads se não tiver tokens suficientes.
Para obter mais informações, basta dar uma olhada no arquivo crawlall.py
.
Se você tiver mais informações sobre a API/Biblioteca do Facebook ou acredita que há algum problema legal com a distribuição desses dados, entre em contato comigo: [email protected] ou abra um problema!