diff --git a/data/contest.com.html b/data/contest.com.html
new file mode 100644
index 0000000000..e897c61410
--- /dev/null
+++ b/data/contest.com.html
@@ -0,0 +1,261 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title>Developer Challenges</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
+<meta name="format-detection" content="telephone=no" />
+<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+<meta name="MobileOptimized" content="176" />
+<meta name="HandheldFriendly" content="True" /><meta property="og:title" content="Telegram Developer Challenges">
+<meta property="og:description" content="Participate in Telegram Coding Competitions and help find issues in the apps.">
+
+    <link rel="shortcut icon" href="/img/cd_favicon.ico" type="image/x-icon" />
+<link rel="mask-icon" href="/img/cd_icon.svg" color="#299ed8">
+    <script>document.cookie="stel_dt="+encodeURIComponent((new Date).getTimezoneOffset())+";path=/;max-age=31536000;samesite=None;secure"</script>
+    
+    <link href="https://fonts.googleapis.com/css?family=Roboto:400,500,700" rel="stylesheet" type="text/css">
+    <link href="/css/bootstrap.min.css?3" rel="stylesheet">
+    <link href="/css/bootstrap-extra.css?2" rel="stylesheet">
+    <link href="/css/telegram.css?212" rel="stylesheet">
+    <link href="/css/contest.css?34" rel="stylesheet">
+<link href="/css/contest-zoo.css?7" rel="stylesheet">
+<link href="/css/jquery-ui.min.css" rel="stylesheet">
+
+  </head>
+  <body class="emoji_image no-transition">
+    
+    <div id="aj_progress" class="progress-bar"></div>
+    
+    <div id="aj_content"><div class="cd-container">
+  <header>
+  <div class="container">
+    <div class="header-wrap">
+      <div id="header-panel" class="header-panel">
+        <div class="header-auth">
+  <div class="header-auth-item"><a class="header-auth-link login-link" href="/auth">Login</a></div>
+</div>
+        <div class="header-breadcrumb header-breadcrumb-simple">
+          <ol id="breadcrumb" class="header-nav breadcrumb"><li class="cd-logo"><a href="/"><i class="cd-icon"></i><span class="cd-logo-title">Developer Challenges</span></a></li></ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</header>
+  <main class="container"><section class="cd-aside">
+  
+  <div class="cd-markdown cd-markdown-page">
+    <h4>Recent News</h4>
+<p>Subscribe to the <a href="https://t.me/contest">Telegram Contests</a> channel for the latest updates.</p>
+<h4>About the Platform</h4>
+<p>Everybody is welcome to try out works submitted by the contestants and create issues (with supporting videos and screenshots) if they encounter any problems.</p>
+<p><br></p>
+
+<p>Contestants can respond to issues. They appear on the platform under <strong>animal aliases</strong> to ensure fairness and transparency in testing. <strong>Admins</strong> will be around to do their own checks on the apps and tally up the <strong>results</strong>.</p>
+  </div>
+</section>
+<section class="cd-content">
+  
+  <h3 class="cd-header">Contests</h3>
+  <a href="/stickers2021-r1" class="cd-contest">
+  <div class="cd-contest-title">Animated Sticker Contest 2021. &#036;50,000<span class="cd-badge cd-badge-new">New</span></div>
+  <div class="cd-contest-period">Mar 11 – Mar 26</div>
+</a><a href="/android2021-r2" class="cd-contest">
+  <div class="cd-contest-title">Android Contest 2021, Round 2. &#036;50,000</div>
+  <div class="cd-contest-period">Mar 19 – Apr 4</div>
+</a><a href="/ios2021-r2" class="cd-contest">
+  <div class="cd-contest-title">watchOS Contest 2021. &#036;47,000</div>
+  <div class="cd-contest-period">Mar 5 – Mar 21</div>
+</a><a href="/android2021-r1" class="cd-contest">
+  <div class="cd-contest-title">Android Contest 2021. &#036;60,000</div>
+  <div class="cd-contest-period">Jan 30 – Feb 14</div>
+</a><a href="/ios2021-r1" class="cd-contest">
+  <div class="cd-contest-title">iOS Animation Contest 2021. &#036;50,000</div>
+  <div class="cd-contest-period">Jan 15 – Jan 31</div>
+</a><a href="/aptitude-tests" class="cd-contest">
+  <div class="cd-contest-title">Aptitude Test Contest. €250,000</div>
+  <div class="cd-contest-period">Dec 31, 2020 – Jan 9</div>
+</a><a href="/javascript-web-bonus" class="cd-contest">
+  <div class="cd-contest-title">JavaScript Contest, Bonus Round</div>
+  <div class="cd-contest-period">Aug 18 – Sep 1, 2020</div>
+</a><a href="/javascript-web-3" class="cd-contest">
+  <div class="cd-contest-title">JavaScript Contest, Stage 3</div>
+  <div class="cd-contest-period">May 30 – Jun 20, 2020</div>
+</a><a href="/data-clustering-2" class="cd-contest">
+  <div class="cd-contest-title">Data Clustering Contest, Stage 2. €100,000</div>
+  <div class="cd-contest-period">May 11 – May 25, 2020</div>
+</a><a href="/voip-contest-3" class="cd-contest">
+  <div class="cd-contest-title">VoIP Contest, Stage 3. €50,000</div>
+  <div class="cd-contest-period">Mar 9 – Mar 30, 2020</div>
+</a><a href="/blockchain-2-bonus" class="cd-contest">
+  <div class="cd-contest-title">Blockchain Contest, Stage 2: Bonus Prize €80,000</div>
+  <div class="cd-contest-period">Mar 6 – Mar 20, 2020</div>
+</a><a href="/javascript-web-2" class="cd-contest">
+  <div class="cd-contest-title">JavaScript Contest, Stage 2</div>
+  <div class="cd-contest-period">Jan 31 – Feb 15, 2020</div>
+</a><a href="/voip-contest-2" class="cd-contest">
+  <div class="cd-contest-title">VoIP Contest, Stage 2. &#036;75,000</div>
+  <div class="cd-contest-period">Jan 14 – Jan 29, 2020</div>
+</a><a href="/blockchain-2" class="cd-contest">
+  <div class="cd-contest-title">Blockchain Contest, Stage 2. &#036;100,000</div>
+  <div class="cd-contest-period">Dec 7 – Dec 22, 2019</div>
+</a><a href="/data-clustering" class="cd-contest">
+  <div class="cd-contest-title">Data Clustering Contest. &#036;100,000</div>
+  <div class="cd-contest-period">Nov 18 – Dec 2, 2019</div>
+</a><a href="/javascript-web" class="cd-contest">
+  <div class="cd-contest-title">Javascript Contest, Stage 1. &#036;80,000+</div>
+  <div class="cd-contest-period">Nov 3 – Nov 17, 2019</div>
+</a><a href="/voip-contest" class="cd-contest">
+  <div class="cd-contest-title">VoIP Contest, Stage 1. &#036;50,000+</div>
+  <div class="cd-contest-period">Oct 15 – Oct 26, 2019</div>
+</a><a href="/animated-stickers" class="cd-contest">
+  <div class="cd-contest-title">Animated Stickers Contest. &#036;25,000+</div>
+  <div class="cd-contest-period">Oct 5 – Oct 20, 2019</div>
+</a><a href="/themes" class="cd-contest">
+  <div class="cd-contest-title">Theme Design Contest. &#036;25,000+</div>
+  <div class="cd-contest-period">Oct 5 – Oct 20, 2019</div>
+</a><a href="/blockchain" class="cd-contest">
+  <div class="cd-contest-title">Blockchain Contest. &#036;200,000–400,000</div>
+  <div class="cd-contest-period">Sep 24 – Oct 15, 2019</div>
+</a><a href="/telegrambugs" class="cd-contest">
+  <div class="cd-contest-title">Bugs on Telegram</div>
+  <div class="cd-contest-period">Jun 14 – Jun 23, 2019</div>
+</a><a href="/chart-js" class="cd-contest">
+  <div class="cd-contest-title">JavaScript Chart Competition. &#036;50,000</div>
+  <div class="cd-contest-period">Apr 7 – Apr 15, 2019</div>
+</a><a href="/chart-android" class="cd-contest">
+  <div class="cd-contest-title">Android Chart Competition. &#036;50,000</div>
+  <div class="cd-contest-period">Apr 7 – Apr 15, 2019</div>
+</a><a href="/chart-ios" class="cd-contest">
+  <div class="cd-contest-title">iOS Chart Competition. &#036;50,000</div>
+  <div class="cd-contest-period">Apr 7 – Apr 15, 2019</div>
+</a>
+</section></main>
+</div><div class="popup-container login-popup-container hide" id="login-popup-container">
+  <div class="popup">
+    <div class="popup-body">
+      <section>
+        <h2>Log In</h2>
+        <p>Log in here to leave comments and take part in the Telegram Competitions. Please enter your <b>phone number</b> in the <a target="_blank" rel="noopener" href="https://telegram.org/faq#login-and-sms">international format</a> and we will send a confirmation message to your account via Telegram.</p>
+
+        <form id="send-form" class="login-form">
+          <div class="form-group">
+            <input type="tel" class="form-control cd-form-control input-lg" id="login-phone" placeholder="+12223334455" autocomplete="off"/>
+          </div>
+          <div class="popup-buttons">
+            <a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><button type="submit" class="btn btn-link btn-lg">Next</button>
+          </div>
+        </form>
+
+        <div id="login-form" class="hide">
+          <div class="form-group">
+            <span class="form-control cd-form-control input input-lg input-disabled"><strong id="login-phone-field"></strong> (<a class="login-back" href="/auth">Incorrect?</a>)</span>
+            <p class="help-block dots-animated">We&#39;ve just sent you a message.<br/>Please confirm access via Telegram</p>
+          </div>
+          <div class="popup-buttons">
+            <a class="btn btn-link btn-lg login-cancel-btn">Cancel</a><a class="btn btn-link btn-lg login-back">Back</a>
+          </div>
+        </div>
+      </section>
+    </div>
+  </div>
+</div></div>
+    <script src="/js/jquery.min.js?1"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script src="/js/main-aj.js?50"></script>
+    <script src="/js/contest.js?24"></script>
+<script src="/js/jquery-ui.min.js?1"></script>
+<script src="/js/tgsticker.js?24"></script>
+
+    <script>ajInit({"version":358,"apiUrl":"\/api?hash=telegram-crawler","unauth":true});</script>
+    <script id="aj_script">Aj._useScrollHack=true;
+Aj.onLoad(function(state) {
+  function requestConfirmation(event) {
+    event && event.preventDefault();
+    var phone = $('#login-phone').val();
+    $.ajax({
+      type: 'POST',
+      url: '/auth/request',
+      data: {
+        phone: phone
+      },
+      success: function(result) {
+        $('#login-phone-field').text(phone);
+        $('#send-form').addClass('hide');
+        $('#login-form').removeClass('hide');
+        checkAuth(result.temp_session);
+      },
+      error: function(xhr) {
+        showAlert(xhr.responseText || 'Server error');
+      },
+      dataType: 'json'
+    });
+    return false;
+  }
+  function cancelConfirmation(event) {
+    event && event.preventDefault();
+    $('#login-phone-field').text('');
+    $('#send-form').removeClass('hide');
+    $('#login-form').addClass('hide');
+    $('#login-phone').focus();
+    clearTimeout(window.authTimeout);
+    return false;
+  }
+  function checkAuth(temp_session) {
+    clearTimeout(window.authTimeout);
+    window.authTimeout = setTimeout(function doCheckAuth() {
+      $.ajax({
+        type: 'POST',
+        url: '/auth/login',
+        data: {
+          temp_session: temp_session
+        },
+        success: function(result) {
+          if (result) {
+            location.reload();
+          } else {
+            checkAuth(temp_session);
+          }
+        },
+        error: function (xhr) {
+          showAlert(xhr.responseText || 'Server error');
+        },
+        dataType: 'json'
+      });
+    }, 700);
+  }
+  $('#login-popup-container').on('popup:open', function() {
+    $('#login-phone').focus();
+  });
+  $('#login-popup-container').on('popup:close', function() {
+    cancelConfirmation();
+    if (location.pathname == '/auth') {
+      window.history && history.replaceState(null, null, '/');
+    }
+  });
+  $('#login-popup-container #send-form').on('submit', requestConfirmation);
+  $('#login-popup-container .login-cancel-btn').on('click', function(e) {
+    e.preventDefault();
+    closePopup('#login-popup-container');
+  });
+  $('#login-popup-container .login-back').on('click', cancelConfirmation);
+  $('header .login-link').on('click', function(e) {
+    e.stopImmediatePropagation();
+    e.preventDefault();
+    openPopup('#login-popup-container');
+  });
+});
+Aj.onUnload(function(state) {
+  $('#login-popup-container').off('popup:open');
+  $('#login-popup-container').off('popup:close');
+  $('#login-popup-container #send-form').off('submit');
+  $('#login-popup-container .login-cancel-btn').off('click');
+  $('#login-popup-container .login-back').off('click');
+  $('header .login-link').off('click');
+});
+</script>
+    <script>Aj.pageLoaded();</script>
+    
+  </body>
+</html>
+