- home :: github.com/worlddb/factbook
- bugs :: github.com/worlddb/factbook/issues
- gem :: rubygems.org/gems/factbook
- rdoc :: rubydoc.info/gems/factbook
- forum :: groups.google.com/group/openmundi
The World Factbook [1][2] published by the Central Intelligence Agency (CIA) offers free country profiles in the public domain (that is, no copyright(s), no rights reserved).
page = Factbook::Page.new( 'br' ) # br is the country code for Brazil
pp page.data # pretty print hash
resulting in:
{"Introduction"=>
{"Background"=>
{"text"=>
"Following more than three centuries under Portuguese rule,
Brazil gained its independence in 1822, ..."}},
"Geography"=>
{"Location"=>{"text"=>"Eastern South America, bordering the Atlantic Ocean"},
"Geographic coordinates"=>{"text"=>"10 00 S, 55 00 W"},
"Map references"=>{"text"=>"South America"},
"Area"=>
{"total"=>{"text"=>"8,515,770 sq km"},
"land"=>{"text"=>"8,358,140 sq km"},
"water"=>{"text"=>"157,630 sq km"},
"note"=>
{"text"=>
"includes Arquipelago de Fernando de Noronha, Atol das Rocas, ..."}},
"Area - comparative"=>
{"text"=>"slightly smaller than the US"},
"Land boundaries"=>
{"total"=>{"text"=>"16,145 km"},
"border countries (10)"=>
{"text"=>
"Argentina 1,263 km, Bolivia 3,403 km, Colombia 1,790 km,
French Guiana 649 km, Guyana 1,308 km, Paraguay 1,371 km, Peru 2,659 km,
Suriname 515 km, Uruguay 1,050 km, Venezuela 2,137 km"}},
"Climate"=>{"text"=>"mostly tropical, but temperate in south"},
"Elevation extremes"=>
{"lowest point"=>{"text"=>"Atlantic Ocean 0 m"},
"highest point"=>{"text"=>"Pico da Neblina 2,994 m"}},
"Natural resources"=>
{"text"=>
"bauxite, gold, iron ore, manganese, nickel, phosphates, ..."},
...
pp page.background ## same as page['Introduction']['Background']['text']
# => "Following more than three centuries..."
pp page.area ## same as page['Geography'][''Area']['total']['text']
# => "8,515,770 sq km"
pp page.area_land ## same as page['Geography'][''Area']['land']['text']
# => "8,358,140 sq km"
pp page.area_water ## same as page['Geography'][''Area']['water']['text']
# => "157,630 sq km"
pp page.area_note ## same as page['Geography'][''Area']['note']['text']
# => "includes Arquipelago de Fernando de Noronha, Atol das Rocas, ..."
pp page.area_comparative ## same as page['Geography']['Area - comparative']['text']
# => "slightly smaller than the US"
pp page.climate ## same as page['Geography']['Climate']['text']
# => "mostly tropical, but temperate in south"
pp page.terrain ## same as page['Geography']['Terrain']['text']
# => "mostly flat to rolling lowlands in north; ..."
pp page.elevation_lowest ## same as page['Geography']['Elevation extremes']['lowest point']['text']
# => "Atlantic Ocean 0 m"
pp page.elevation_highest ## same as page['Geography']['Elevation extremes']['highest point']['text']
# => "Pico da Neblina 2,994 m"
pp page.resources ## same as page['Geography'][Natural resources']['text']
# => "bauxite, gold, iron ore, manganese, nickel, phosphates, ..."
...
See data/attributes.yml
for the full listing of all built-in attribute shortcut accessors.
See Attributes for a quick reference listing.
page = Factbook::Page.new( 'br' )
File.open( 'br.json', 'w') do |f|
f.write page.to_json
end
Factbook.codes.each do |code|
pp code
end
resulting in:
#<struct Factbook::Codes::Code
code="af",
name="Afghanistan",
category="Countries",
region="South Asia">
#<struct Factbook::Codes::Code
code="al",
name="Albania",
category="Countries",
region="Europe">
#<struct Factbook::Codes::Code
code="ag",
name="Algeria",
category="Countries",
region="Africa">
#<struct Factbook::Codes::Code
code="an",
name="Andorra",
category="Countries",
region="Europe">
...
Note: You can filter codes by category e.g. Countries, Dependencies, Miscellaneous, Oceans, etc. and/or by region e.g. Africa, Europe, South Asia, Central America and Caribbean, etc.
assert_equal 261, Factbook.codes.size
## categories
assert_equal 195, Factbook.codes.countries.size
assert_equal 52, Factbook.codes.dependencies.size
assert_equal 5, Factbook.codes.oceans.size
assert_equal 1, Factbook.codes.world.size
assert_equal 2, Factbook.codes.others.size
assert_equal 6, Factbook.codes.misc.size
## regions
assert_equal 55, Factbook.codes.europe.size
assert_equal 9, Factbook.codes.south_asia.size
assert_equal 6, Factbook.codes.central_asia.size
assert_equal 22, Factbook.codes.east_n_souteast_asia.size
assert_equal 19, Factbook.codes.middle_east.size
assert_equal 56, Factbook.codes.africa.size
assert_equal 7, Factbook.codes.north_america.size
assert_equal 33, Factbook.codes.central_america_n_caribbean.size
assert_equal 14, Factbook.codes.south_america.size
assert_equal 30, Factbook.codes.australia_oceania.size
assert_equal 4, Factbook.codes.antartica.size
assert_equal 5, Factbook.codes.region('Oceans').size
assert_equal 1, Factbook.codes.region('World').size
## categories + regions
assert_equal 45, Factbook.codes.countries.europe.size
...
See data/codes.csv
for the built-in listing of all codes with categories and regions.
The World Factbook includes 267 entries - 195 sovereign countries / 2 others / 58 dependencies / 6 miscellaneous / 5 oceans / 1 world:
A
af
Afghanistan
al
Albania
ag
Algeria
an
Andorra
ao
Angola
ac
Antigua and Barbuda
ar
Argentina
am
Armenia
as
Australia
au
Austria
aj
Azerbaijan
B
bf
The Bahamas
ba
Bahrain
bg
Bangladesh
bb
Barbados
bo
Belarus
be
Belgium
bh
Belize
bn
Benin
bt
Bhutan
bl
Bolivia
bk
Bosnia and Herzegovina
bc
Botswana
br
Brazil
bx
Brunei
bu
Bulgaria
uv
Burkina Faso
bm
Burma
by
Burundi
C
cb
Cambodia
cm
Cameroon
ca
Canada
cv
Cape Verde
ct
Central African Republic
cd
Chad
ci
Chile
ch
China
co
Colombia
cn
Comoros
cg
Congo DR
cf
Congo
cs
Costa Rica
iv
Cote d'Ivoire
hr
Croatia
cu
Cuba
cy
Cyprus
ez
Czech Republic
D
da
Denmark
dj
Djibouti
do
Dominica
dr
Dominican Republic
E
ec
Ecuador
eg
Egypt
es
El Salvador
ek
Equatorial Guinea
er
Eritrea
en
Estonia
et
Ethiopia
F
fj
Fiji
fi
Finland
fr
France
G
gb
Gabon
ga
The Gambia
gg
Georgia
gm
Germany
gh
Ghana
gr
Greece
gj
Grenada
gt
Guatemala
gv
Guinea
pu
Guinea-Bissau
gy
Guyana
H
ha
Haiti
ho
Honduras
hu
Hungary
I
ic
Iceland
in
India
id
Indonesia
ir
Iran
iz
Iraq
ei
Ireland
is
Israel
it
Italy
J
jm
Jamaica
ja
Japan
jo
Jordan
K
kz
Kazakhstan
ke
Kenya
kr
Kiribati
kn
North Korea
ks
South Korea
kv
Kosovo
ku
Kuwait
kg
Kyrgyzstan
L
la
Laos
lg
Latvia
le
Lebanon
lt
Lesotho
li
Liberia
ly
Libya
ls
Liechtenstein
lh
Lithuania
lu
Luxembourg
M
mk
Macedonia
ma
Madagascar
mi
Malawi
my
Malaysia
mv
Maldives
ml
Mali
mt
Malta
rm
Marshall Islands
mr
Mauritania
mp
Mauritius
mx
Mexico
fm
Micronesia
md
Moldova
mn
Monaco
mg
Mongolia
mj
Montenegro
mo
Morocco
mz
Mozambique
N
wa
Namibia
nr
Nauru
np
Nepal
nl
Netherlands
nz
New Zealand
nu
Nicaragua
ng
Niger
ni
Nigeria
no
Norway
O
mu
Oman
P
pk
Pakistan
ps
Palau
pm
Panama
pp
Papua New Guinea
pa
Paraguay
pe
Peru
rp
Philippines
pl
Poland
po
Portugal
Q
qa
Qatar
R
ro
Romania
rs
Russia
rw
Rwanda
S
sc
Saint Kitts and Nevis
st
Saint Lucia
vc
Saint Vincent and the Grenadines
ws
Samoa
sm
San Marino
tp
Sao Tome and Principe
sa
Saudi Arabia
sg
Senegal
ri
Serbia
se
Seychelles
sl
Sierra Leone
sn
Singapore
lo
Slovakia
si
Slovenia
bp
Solomon Islands
so
Somalia
sf
South Africa
od
South Sudan
sp
Spain
ce
Sri Lanka
su
Sudan
ns
Suriname
wz
Swaziland
sw
Sweden
sz
Switzerland
sy
Syria
T
ti
Tajikistan
tz
Tanzania
th
Thailand
tt
Timor-Leste
to
Togo
tn
Tonga
td
Trinidad and Tobago
ts
Tunisia
tu
Turkey
tx
Turkmenistan
tv
Tuvalu
U
ug
Uganda
up
Ukraine
ae
United Arab Emirates
uk
United Kingdom
us
United States
uy
Uruguay
uz
Uzbekistan
V
nh
Vanuatu
vt
Vatican City (Holy See)
ve
Venezuela
vm
Vietnam
Y
ym
Yemen
Z
za
Zambia
zi
Zimbabwe
tw
Taiwan
ee
European Union
Australia (6):
at
Ashmore and Cartier Islands
kt
Christmas Island
ck
Cocos (Keeling) Islands
cr
Coral Sea Islands
hm
Heard Island and McDonald Islands
nf
Norfolk Island
China (2):
hk
Hong Kong
mc
Macau
Denmark (2):
fo
Faroe Islands
gl
Greenland
France (8):
ip
Clipperton Island
fp
French Polynesia
fs
French Southern and Antarctic Lands
nc
New Caledonia
tb
Saint Barthelemy
rn
Saint Martin
sb
Saint Pierre and Miquelon
wf
Wallis and Futuna
Netherlands (3):
aa
Aruba
uc
Curacao
nn
Sint Maarten
New Zealand (3):
cw
Cook Islands
ne
Niue
tl
Tokelau
Norway (3):
bv
Bouvet Island
jn
Jan Mayen
sv
Svalbard
Great Britain (17):
ax
Akrotiri (Sovereign Base)
av
Anguilla
bd
Bermuda
io
British Indian Ocean Territory
vi
British Virgin Islands
cj
Cayman Islands
dx
Dhekelia (Sovereign Base)
fk
Falkland Islands
gi
Gibraltar
gk
Guernsey
je
Jersey
im
Isle of Man
mh
Montserrat
pc
Pitcairn Islands
sh
Saint Helena
sx
South Georgia and the South Sandwich Islands
tk
Turks and Caicos Islands
United States (14):
aq
American Samoa
gq
Guam
bq
Navassa Island
cq
Northern Mariana Islands
rq
Puerto Rico
vq
US Virgin Islands
wq
Wake Island
um
US Pacific Island Wildlife Refuges
(Baker Island, Howland Island, Jarvis Island, Johnston Atoll, Kingman Reef, Midway Islands, Palmyra Atoll)
ay
Antarctica
gz
Gaza Strip
pf
Paracel Islands
pg
Spratly Islands
we
West Bank
wi
Western Sahara
xq
Arctic Ocean
zh
Atlantic Ocean
xo
Indian Ocean
zn
Pacific Ocean
oo
Southern Ocean
xx
World
factbook/factbook.json - open (public domain)
factbook country profiles in JSON for all the world's countries (using internet domain names
for country codes e.g. Austria is at.json
not au.json
, Germany is de.json
not gm.json
and so on)
Ruby
-
worldfactbook gem by Sayem Khan (aka sayem); fetches data from its own mirror, that is, rubyworldfactbook.com (last updated 2011?)
-
the_country_identity gem by Raul Pino (aka p1nox); fetches data from an RDF Turtle endpoint hosted by the Research Group Data and Web Science at the University of Mannheim, Germany
JavaScript
- worldfactbook-dataset by Richard Marr (aka richmarr); fetches data using Node.js (last updated 2013)
Python
- openfactbook datasets & tools by Eckhard Licher; uses official (offline) download archive (last updated 2014); incl. flags, maps, and more
Others
TBD
Just install the gem:
$ gem install factbook
The factbook
scripts are dedicated to the public domain.
Use it as you please with no restrictions whatsoever.
Send them along to the Open Mundi (world.db) Database Forum/Mailing List. Thanks!