Skip to contents

Website Lifecycle: experimental License: CC BY-NC 4.0

Documentation, function reference, and articles: schliebs.github.io/disinfo

disinfo bundles data and helper functions for research on disinformation and state-backed information operations. Right now it covers two things: curated seed lists of Russian and Chinese state-linked diplomatic and government accounts on Twitter/X, and domain lists of Russian and Chinese state-controlled media outlets. The plan is to grow this into a broader toolkit for disinformation studies.

Installation

# install.packages("remotes")
remotes::install_github("schliebs/disinfo")

Diplomat and government accounts

get_accounts() returns one row per account: the seed-list entry (country, ISO2 code, account category, handle) joined with profile metadata from the most recent scrape.

library(disinfo)

ru_accs <- get_accounts(country = "RU", group = "diplomats")
#> 353 Russian diplomat and government accounts. Account data as of 2024-04-15.

ru_accs |>
  dplyr::select(country, cat, twitter_handle, name, followers_count)
#> # A tibble: 353 × 5
#>    country     cat   twitter_handle  name                        followers_count
#>    <chr>       <chr> <chr>           <chr>                                 <dbl>
#>  1 Afghanistan E     RusEmbassyKabul "Russian Embassy in Kabul"            16922
#>  2 Afghanistan C     ruscg_mzs       "Russia in Mazar-e Sharif"              707
#>  3 Albania     E     RussianAlbania  "Russian Embassy in Albani…            1148
#>  4 Algeria     E     AmbRus_Algerie  "Ambassade de Russie"                 10069
#>  5 Angola      E     russembangola4  "russembangola"                         350
#>  6 Argentina   E     EmbRusiaEnArgEs "Embajada de Rusia,AR"                19394
#>  7 Argentina   E     EmbRusiaEnArgRu "Посольство России,AR"                 4479
#>  8 Armenia     E     rusembassyARM   "ПосольствоРФвAрмении"                 3969
#>  9 Armena      C     GyumriRussia    "Генеральное консульство Р…             811
#> 10 Australia   E     RusEmbAU        "Russia in Australia"                  7975
#> # ℹ 343 more rows

Both countries at once, with the originating state in state:

accs <- get_accounts(country = c("RU", "CN"))
table(accs$state)
#> 
#>  CN  RU 
#> 293 353

The cat column codes the account type; the most common codes are E embassies, C consulates and consuls, A ambassadors and staffers, G central government accounts, S other staffers, and QG quasi-governmental accounts.

State media domains

get_domains() returns domain lists for state-controlled outlets (RT, Sputnik, TASS, CGTN, Xinhua, People’s Daily, Global Times, China Daily), including their language editions and regional subdomains. Useful for matching shared URLs in social media data or building link-search queries.

domains <- get_domains(country = c("RU", "CN"), online = FALSE)
head(domains)
#> # A tibble: 6 × 7
#>   country lang  outlet url               lang_identifier   prefix   ct_keyword
#>   <chr>   <chr> <chr>  <chr>             <chr>             <chr>    <chr>     
#> 1 russia  en    rt     rt.com            rt.com            https:// rt.com    
#> 2 russia  en    rt     rt.com            on.rt.com         https:// rt.com    
#> 3 russia  de    rt     deutsch.rt.com    deutsch.rt.com    https:// rt.com    
#> 4 russia  de    rt     de.rt.com         de.rt.com         https:// rt.com    
#> 5 russia  fr    rt     francais.rt.com   francais.rt.com   https:// rt.com    
#> 6 russia  es    rt     actualidad.rt.com actualidad.rt.com https:// rt.com

Data

All data lives in inst/extdata/ as plain CSV files, so you can also use it without R:

By default the functions read these files from the GitHub repository, so you get the current versions without reinstalling (online = TRUE). Set online = FALSE to use the snapshots bundled with your installed package.

The account lists were maintained and re-scraped between 2021 and 2024; the profile metadata is from the last scrape in April 2024. Handles and labels on X change, so treat counts and account status as snapshots, not live data.

Licence

CC BY-NC 4.0 — free to use for academic and other non-commercial work, with attribution. Commercial use is not permitted.