diff --git a/src/wikipedia.php b/src/wikipedia.php
index 54052567..a36c9920 100644
--- a/src/wikipedia.php
+++ b/src/wikipedia.php
@@ -4,12 +4,48 @@ function ajax_wikipedia ($param) {
     $wp_lang = $m[1];
     $wp_page = $m[2];
   }
+  elseif (preg_match("/^Q\d+$/", $param['page'])) {
+    $id = $param['page'];
+    $body = file_get_contents("https://www.wikidata.org/wiki/Special:EntityData/{$id}.json");
+    $body = json_decode($body, true);
 
-  if (!isset($wp_lang) || !isset($wp_page)) {
+    if (!array_key_exists('entities', $body) || !array_key_exists($id, $body['entities'])) {
+      return false;
+    }
+
+    $data = $body['entities'][$id];
+
+    if (array_key_exists('sitelinks', $data)) {
+      if (array_key_exists($param['lang'] . 'wiki', $data['sitelinks'])) {
+        $wp_lang = $param['lang'];
+        $wp_url = $data['sitelinks'][$param['lang'] . 'wiki']['url'];
+      }
+      elseif (array_key_exists('enwiki', $data['sitelinks'])) {
+        $wp_lang = 'en';
+        $wp_url = $data['sitelinks']['enwiki']['url'];
+      }
+      else {
+        $sitelinks_ids = array_keys($data['sitelinks']);
+        $sitelinks_ids = array_values(array_filter($sitelinks_ids, function ($id) {
+          return preg_match('/wiki$/', $id);
+        }));
+
+        if (sizeof($sitelinks_ids)) {
+          $id = $sitelinks_ids[0];
+          $wp_lang = substr($id, 0, strlen($id) - 4);
+          $wp_url = $data['sitelinks'][$id]['url'];
+        }
+      }
+    }
+  }
+
+  if (!isset($wp_lang) || !(isset($wp_page) || isset($wp_url))) {
     return false;
   }
 
-  $wp_url = "https://{$wp_lang}.wikipedia.org/wiki/" . urlencode(strtr($wp_page, array(" " => "_")));
+  if (!isset($wp_url)) {
+    $wp_url = "https://{$wp_lang}.wikipedia.org/wiki/" . urlencode(strtr($wp_page, array(" " => "_")));
+  }
 
   $content = file_get_contents($wp_url);