diff --git a/cypress/integration/origin-search.spec.js b/cypress/integration/origin-search.spec.js
index e7f0ff04..78253a11 100644
--- a/cypress/integration/origin-search.spec.js
+++ b/cypress/integration/origin-search.spec.js
@@ -1,429 +1,429 @@
 /**
  * Copyright (C) 2019-2020  The Software Heritage developers
  * See the AUTHORS file at the top-level directory of this distribution
  * License: GNU Affero General Public License version 3, or any later version
  * See top-level LICENSE file for more information
  */
 
 const nonExistentText = 'NoMatchExists';
 
 let origin;
 let url;
 
 function doSearch(searchText) {
   cy.get('#origins-url-patterns')
     .type(searchText)
     .get('.swh-search-icon')
     .click();
 }
 
 function searchShouldRedirect(searchText, redirectUrl) {
   doSearch(searchText);
   cy.location('pathname')
     .should('equal', redirectUrl);
 }
 
 function searchShouldShowNotFound(searchText, msg) {
   doSearch(searchText);
   cy.get('#swh-no-result')
     .should('be.visible')
     .and('contain', msg);
 }
 
 function stubOriginVisitLatestRequests() {
   cy.server();
   cy.route({
     method: 'GET',
     url: '**/visit/latest/**',
     response: {
       type: 'tar'
     }
   }).as('originVisitLatest');
 }
 
 describe('Test origin-search', function() {
   before(function() {
     origin = this.origin[0];
     url = this.Urls.browse_search();
   });
 
   beforeEach(function() {
     cy.visit(url);
   });
 
   it('should show in result when url is searched', function() {
     cy.get('#origins-url-patterns')
       .type(origin.url);
     cy.get('.swh-search-icon')
       .click();
 
     cy.get('#origin-search-results')
       .should('be.visible');
     cy.contains('tr', origin.url)
       .should('be.visible')
       .find('.swh-visit-status')
       .find('i')
       .should('have.class', 'mdi-check-bold')
       .and('have.attr', 'title',
-           'Origin has at least one full visit by Software Heritage');
+           'Software origin has been archived by Software Heritage');
   });
 
   it('should show not found message when no repo matches', function() {
     searchShouldShowNotFound(nonExistentText,
                              'No origins matching the search criteria were found.');
   });
 
   it('should add appropriate URL parameters', function() {
     // Check all three checkboxes and check if
     // correct url params are added
     cy.get('#swh-search-origins-with-visit')
       .check({force: true})
       .get('#swh-filter-empty-visits')
       .check({force: true})
       .get('#swh-search-origin-metadata')
       .check({force: true})
       .then(() => {
         const searchText = origin.url;
         doSearch(searchText);
         cy.location('search').then(locationSearch => {
           const urlParams = new URLSearchParams(locationSearch);
           const query = urlParams.get('q');
           const withVisit = urlParams.has('with_visit');
           const withContent = urlParams.has('with_content');
           const searchMetadata = urlParams.has('search_metadata');
 
           assert.strictEqual(query, searchText);
           assert.strictEqual(withVisit, true);
           assert.strictEqual(withContent, true);
           assert.strictEqual(searchMetadata, true);
         });
       });
   });
 
   it('should not send request to the resolve endpoint', function() {
     cy.server();
 
     cy.route({
       method: 'GET',
       url: `${this.Urls.api_1_resolve_swh_pid('').slice(0, -1)}**`
     }).as('resolvePid');
 
     cy.route({
       method: 'GET',
       url: `${this.Urls.api_1_origin_search(origin.url)}**`
     }).as('searchOrigin');
 
     cy.get('#origins-url-patterns')
       .type(origin.url);
     cy.get('.swh-search-icon')
       .click();
 
     cy.wait('@searchOrigin');
 
     cy.xhrShouldBeCalled('resolvePid', 0);
     cy.xhrShouldBeCalled('searchOrigin', 1);
   });
 
   context('Test pagination', function() {
     it('should not paginate if there are not many results', function() {
       // Setup search
       cy.get('#swh-search-origins-with-visit')
         .uncheck({force: true})
         .get('#swh-filter-empty-visits')
         .uncheck({force: true})
         .then(() => {
           const searchText = 'libtess';
 
           // Get first page of results
           doSearch(searchText);
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 1);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://github.com/memononen/libtess2');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('have.class', 'disabled');
         });
     });
 
     it('should paginate forward when there are many results', function() {
       stubOriginVisitLatestRequests();
       // Setup search
       cy.get('#swh-search-origins-with-visit')
         .uncheck({force: true})
         .get('#swh-filter-empty-visits')
         .uncheck({force: true})
         .then(() => {
           const searchText = 'many.origins';
 
           // Get first page of results
           doSearch(searchText);
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 100);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/1');
           cy.get('.swh-search-result-entry#origin-99 td a')
             .should('have.text', 'https://many.origins/100');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get second page of results
           cy.get('#origins-next-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 100);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/101');
           cy.get('.swh-search-result-entry#origin-99 td a')
             .should('have.text', 'https://many.origins/200');
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get third (and last) page of results
           cy.get('#origins-next-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 50);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/201');
           cy.get('.swh-search-result-entry#origin-49 td a')
             .should('have.text', 'https://many.origins/250');
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('have.class', 'disabled');
         });
     });
 
     it('should paginate backward from a middle page', function() {
       stubOriginVisitLatestRequests();
       // Setup search
       cy.get('#swh-search-origins-with-visit')
         .uncheck({force: true})
         .get('#swh-filter-empty-visits')
         .uncheck({force: true})
         .then(() => {
           const searchText = 'many.origins';
 
           // Get first page of results
           doSearch(searchText);
           cy.wait('@originVisitLatest');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get second page of results
           cy.get('#origins-next-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get first page of results again
           cy.get('#origins-prev-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 100);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/1');
           cy.get('.swh-search-result-entry#origin-99 td a')
             .should('have.text', 'https://many.origins/100');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
         });
     });
 
     it('should paginate backward from the last page', function() {
       stubOriginVisitLatestRequests();
       // Setup search
       cy.get('#swh-search-origins-with-visit')
         .uncheck({force: true})
         .get('#swh-filter-empty-visits')
         .uncheck({force: true})
         .then(() => {
           const searchText = 'many.origins';
 
           // Get first page of results
           doSearch(searchText);
           cy.wait('@originVisitLatest');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get second page of results
           cy.get('#origins-next-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get third (and last) page of results
           cy.get('#origins-next-results-button a')
             .click();
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('have.class', 'disabled');
 
           // Get second page of results again
           cy.get('#origins-prev-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 100);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/101');
           cy.get('.swh-search-result-entry#origin-99 td a')
             .should('have.text', 'https://many.origins/200');
 
           cy.get('#origins-prev-results-button')
             .should('not.have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
 
           // Get first page of results again
           cy.get('#origins-prev-results-button a')
             .click();
           cy.wait('@originVisitLatest');
 
           cy.get('.swh-search-result-entry')
             .should('have.length', 100);
 
           cy.get('.swh-search-result-entry#origin-0 td a')
             .should('have.text', 'https://many.origins/1');
           cy.get('.swh-search-result-entry#origin-99 td a')
             .should('have.text', 'https://many.origins/100');
 
           cy.get('#origins-prev-results-button')
             .should('have.class', 'disabled');
           cy.get('#origins-next-results-button')
             .should('not.have.class', 'disabled');
         });
     });
   });
 
   context('Test valid persistent ids', function() {
     it('should resolve directory', function() {
       const redirectUrl = this.Urls.browse_directory(origin.content[0].directory);
       const persistentId = `swh:1:dir:${origin.content[0].directory}`;
 
       searchShouldRedirect(persistentId, redirectUrl);
     });
 
     it('should resolve revision', function() {
       const redirectUrl = this.Urls.browse_revision(origin.revisions[0]);
       const persistentId = `swh:1:rev:${origin.revisions[0]}`;
 
       searchShouldRedirect(persistentId, redirectUrl);
     });
 
     it('should resolve snapshot', function() {
       const redirectUrl = this.Urls.browse_snapshot_directory(origin.snapshot);
       const persistentId = `swh:1:snp:${origin.snapshot}`;
 
       searchShouldRedirect(persistentId, redirectUrl);
     });
 
     it('should resolve content', function() {
       const redirectUrl = this.Urls.browse_content(`sha1_git:${origin.content[0].sha1git}`);
       const persistentId = `swh:1:cnt:${origin.content[0].sha1git}`;
 
       searchShouldRedirect(persistentId, redirectUrl);
     });
 
     it('should not send request to the search endpoint', function() {
       cy.server();
       const persistentId = `swh:1:rev:${origin.revisions[0]}`;
 
       cy.route({
         method: 'GET',
         url: this.Urls.api_1_resolve_swh_pid(persistentId)
       }).as('resolvePid');
 
       cy.route({
         method: 'GET',
         url: `${this.Urls.api_1_origin_search('').slice(0, -1)}**`
       }).as('searchOrigin');
 
       cy.get('#origins-url-patterns')
         .type(persistentId);
       cy.get('.swh-search-icon')
         .click();
 
       cy.wait('@resolvePid');
 
       cy.xhrShouldBeCalled('resolvePid', 1);
       cy.xhrShouldBeCalled('searchOrigin', 0);
     });
   });
 
   context('Test invalid persistent ids', function() {
     it('should show not found for directory', function() {
       const persistentId = `swh:1:dir:${this.unarchivedRepo.rootDirectory}`;
       const msg = `Directory with sha1_git ${this.unarchivedRepo.rootDirectory} not found`;
 
       searchShouldShowNotFound(persistentId, msg);
     });
 
     it('should show not found for snapshot', function() {
       const persistentId = `swh:1:snp:${this.unarchivedRepo.snapshot}`;
       const msg = `Snapshot with id ${this.unarchivedRepo.snapshot} not found!`;
 
       searchShouldShowNotFound(persistentId, msg);
     });
 
     it('should show not found for revision', function() {
       const persistentId = `swh:1:rev:${this.unarchivedRepo.revision}`;
       const msg = `Revision with sha1_git ${this.unarchivedRepo.revision} not found.`;
 
       searchShouldShowNotFound(persistentId, msg);
     });
 
     it('should show not found for content', function() {
       const persistentId = `swh:1:cnt:${this.unarchivedRepo.content[0].sha1git}`;
       const msg = `Content with sha1_git checksum equals to ${this.unarchivedRepo.content[0].sha1git} not found!`;
 
       searchShouldShowNotFound(persistentId, msg);
     });
   });
 
 });
diff --git a/swh/web/assets/src/bundles/browse/origin-search.js b/swh/web/assets/src/bundles/browse/origin-search.js
index cb237491..765a59a0 100644
--- a/swh/web/assets/src/bundles/browse/origin-search.js
+++ b/swh/web/assets/src/bundles/browse/origin-search.js
@@ -1,229 +1,242 @@
 /**
  * Copyright (C) 2018-2020  The Software Heritage developers
  * See the AUTHORS file at the top-level directory of this distribution
  * License: GNU Affero General Public License version 3, or any later version
  * See top-level LICENSE file for more information
  */
 
 import {handleFetchError} from 'utils/functions';
 
 const limit = 100;
 let linksPrev = [];
 let linkNext = null;
 let linkCurrent = null;
 let inSearch = false;
 
 function parseLinkHeader(s) {
   let re = /<(.+)>; rel="next"/;
   return s.match(re)[1];
 }
 
 function fixTableRowsStyle() {
   setTimeout(() => {
     $('#origin-search-results tbody tr').removeAttr('style');
   });
 }
 
 function clearOriginSearchResultsTable() {
   $('#origin-search-results tbody tr').remove();
 }
 
 function populateOriginSearchResultsTable(origins) {
   if (origins.length > 0) {
     $('#swh-origin-search-results').show();
     $('#swh-no-result').hide();
     clearOriginSearchResultsTable();
     let table = $('#origin-search-results tbody');
     for (let [i, origin] of origins.entries()) {
       let browseUrl = `${Urls.browse_origin()}?origin_url=${origin.url}`;
-      let tableRow = `<tr id="origin-${i}" class="swh-search-result-entry swh-tr-hover-highlight">`;
-      tableRow += `<td style="white-space: nowrap;"><a href="${encodeURI(browseUrl)}">${encodeURI(origin.url)}</a></td>`;
-      tableRow += `<td id="visit-type-origin-${i}" style="width: 120px;"></td>`;
-      tableRow += `<td class="swh-visit-status" id="visit-status-origin-${i}"><i title="Checking visit status" class="mdi mdi-sync mdi-spin"></i></td>`;
+      let tableRow =
+        `<tr id="origin-${i}" class="swh-search-result-entry swh-tr-hover-highlight">`;
+      tableRow +=
+        `<td id="visit-type-origin-${i}" style="width: 120px;">` +
+        '<i title="Checking software origin type" class="mdi mdi-sync mdi-spin mdi-fw"></i>' +
+        'Checking</td>';
+      tableRow +=
+        '<td style="white-space: nowrap;">' +
+        `<a href="${encodeURI(browseUrl)}">${encodeURI(origin.url)}</a></td>`;
+      tableRow +=
+        `<td class="swh-visit-status" id="visit-status-origin-${i}">` +
+        '<i title="Checking archiving status" class="mdi mdi-sync mdi-spin mdi-fw"></i>' +
+        'Checking</td>';
       tableRow += '</tr>';
       table.append(tableRow);
       // get async latest visit snapshot and update visit status icon
       let latestSnapshotUrl = Urls.api_1_origin_visit_latest(origin.url);
       latestSnapshotUrl += '?require_snapshot=true';
       fetch(latestSnapshotUrl)
         .then(response => response.json())
         .then(data => {
-          $(`#visit-type-origin-${i}`).text(data.type);
+          $(`#visit-type-origin-${i}`).html(data.type);
           $(`#visit-status-origin-${i}`).children().remove();
           if (data) {
-            $(`#visit-status-origin-${i}`).append('<i title="Origin has at least one full visit by Software Heritage" class="mdi mdi-check-bold"></i>');
+            $(`#visit-status-origin-${i}`).html(
+              '<i title="Software origin has been archived by Software Heritage" ' +
+              'class="mdi mdi-check-bold mdi-fw"></i>Archived');
           } else {
-            $(`#visit-status-origin-${i}`).append('<i title="Origin has not yet been visited by Software Heritage or does not have at least one full visit" class="mdi mdi-close-thick"></i>');
+            $(`#visit-status-origin-${i}`).html(
+              '<i title="Software origin archival by Software Heritage is pending" ' +
+              'class="mdi mdi-close-thick mdi-fw"></i>Pending archival');
             if ($('#swh-filter-empty-visits').prop('checked')) {
               $(`#origin-${i}`).remove();
             }
           }
         });
     }
     fixTableRowsStyle();
   } else {
     $('#swh-origin-search-results').hide();
     $('#swh-no-result').text('No origins matching the search criteria were found.');
     $('#swh-no-result').show();
   }
 
   if (linkNext === null) {
     $('#origins-next-results-button').addClass('disabled');
   } else {
     $('#origins-next-results-button').removeClass('disabled');
   }
 
   if (linksPrev.length === 0) {
     $('#origins-prev-results-button').addClass('disabled');
   } else {
     $('#origins-prev-results-button').removeClass('disabled');
   }
 
   inSearch = false;
   setTimeout(() => {
     window.scrollTo(0, 0);
   });
 }
 
 function searchOriginsFirst(searchQueryText, limit) {
   let baseSearchUrl;
   let searchMetadata = $('#swh-search-origin-metadata').prop('checked');
   if (searchMetadata) {
     baseSearchUrl = new URL(Urls.api_1_origin_metadata_search(), window.location);
     baseSearchUrl.searchParams.append('fulltext', searchQueryText);
   } else {
     baseSearchUrl = new URL(Urls.api_1_origin_search(searchQueryText), window.location);
   }
 
   let withVisit = $('#swh-search-origins-with-visit').prop('checked');
   baseSearchUrl.searchParams.append('limit', limit);
   baseSearchUrl.searchParams.append('with_visit', withVisit);
   let searchUrl = baseSearchUrl.toString();
   searchOrigins(searchUrl);
 }
 
 function searchOrigins(searchUrl) {
   clearOriginSearchResultsTable();
   $('.swh-loading').addClass('show');
   let response = fetch(searchUrl)
     .then(handleFetchError)
     .then(resp => {
       response = resp;
       return response.json();
     })
     .then(data => {
       // Save link to the current results page
       linkCurrent = searchUrl;
       // Save link to the next results page.
       linkNext = null;
       if (response.headers.has('Link')) {
         let parsedLink = parseLinkHeader(response.headers.get('Link'));
         if (parsedLink !== undefined) {
           linkNext = parsedLink;
         }
       }
       // prevLinks is updated by the caller, which is the one to know if
       // we're going forward or backward in the pages.
 
       $('.swh-loading').removeClass('show');
       populateOriginSearchResultsTable(data);
     })
     .catch(response => {
       $('.swh-loading').removeClass('show');
       inSearch = false;
       $('#swh-origin-search-results').hide();
       $('#swh-no-result').text(`Error ${response.status}: ${response.statusText}`);
       $('#swh-no-result').show();
     });
 }
 
 function doSearch() {
   $('#swh-no-result').hide();
   let searchQueryText = $('#origins-url-patterns').val();
   inSearch = true;
   if (searchQueryText.startsWith('swh:')) {
     // searchQueryText may be a PID so sending search queries to PID resolve endpoint
     let resolvePidUrl = Urls.api_1_resolve_swh_pid(searchQueryText);
     fetch(resolvePidUrl)
       .then(handleFetchError)
       .then(response => response.json())
       .then(data => {
         // pid has been successfully resolved,
         // so redirect to browse page
         window.location = data.browse_url;
       })
       .catch(response => {
         // display a useful error message if the input
         // looks like a swh pid
         response.json().then(data => {
           $('#swh-origin-search-results').hide();
           $('.swh-search-pagination').hide();
           $('#swh-no-result').text(data.reason);
           $('#swh-no-result').show();
         });
 
       });
   } else {
     // otherwise, proceed with origins search
     $('#swh-origin-search-results').show();
     $('.swh-search-pagination').show();
     searchOriginsFirst(searchQueryText, limit);
   }
 }
 
 export function initOriginSearch() {
   $(document).ready(() => {
     $('#swh-search-origins').submit(event => {
       event.preventDefault();
       let searchQueryText = $('#origins-url-patterns').val().trim();
       let withVisit = $('#swh-search-origins-with-visit').prop('checked');
       let withContent = $('#swh-filter-empty-visits').prop('checked');
       let searchMetadata = $('#swh-search-origin-metadata').prop('checked');
       let queryParameters = new URLSearchParams();
       queryParameters.append('q', searchQueryText);
       if (withVisit) {
         queryParameters.append('with_visit', withVisit);
       }
       if (withContent) {
         queryParameters.append('with_content', withContent);
       }
       if (searchMetadata) {
         queryParameters.append('search_metadata', searchMetadata);
       }
       // Update the url, triggering page reload and effective search
       window.location = `${Urls.browse_search()}?${queryParameters.toString()}`;
     });
 
     $('#origins-next-results-button').click(event => {
       if ($('#origins-next-results-button').hasClass('disabled') || inSearch) {
         return;
       }
       inSearch = true;
       linksPrev.push(linkCurrent);
       searchOrigins(linkNext);
       event.preventDefault();
     });
 
     $('#origins-prev-results-button').click(event => {
       if ($('#origins-prev-results-button').hasClass('disabled') || inSearch) {
         return;
       }
       inSearch = true;
       searchOrigins(linksPrev.pop());
       event.preventDefault();
     });
 
     let urlParams = new URLSearchParams(window.location.search);
     let query = urlParams.get('q');
     let withVisit = urlParams.has('with_visit');
     let withContent = urlParams.has('with_content');
     let searchMetadata = urlParams.has('search_metadata');
     if (query) {
       $('#origins-url-patterns').val(query);
       $('#swh-search-origins-with-visit').prop('checked', withVisit);
       $('#swh-filter-empty-visits').prop('checked', withContent);
       $('#swh-search-origin-metadata').prop('checked', searchMetadata);
       doSearch();
     }
   });
 }
diff --git a/swh/web/templates/browse/search.html b/swh/web/templates/browse/search.html
index 23feb540..d557d2b1 100644
--- a/swh/web/templates/browse/search.html
+++ b/swh/web/templates/browse/search.html
@@ -1,52 +1,52 @@
 {% extends "./layout.html" %}
 
 {% comment %}
-Copyright (C) 2017-2019  The Software Heritage developers
+Copyright (C) 2017-2020  The Software Heritage developers
 See the AUTHORS file at the top-level directory of this distribution
 License: GNU Affero General Public License version 3, or any later version
 See top-level LICENSE file for more information
 {% endcomment %}
 
 {% load static %}
 
 {% block navbar-content %}
 <h4>Search archived software</h4>
 {% endblock %}
 
 {% block browse-content %}
 
 {% include "includes/origin-search-form.html" %}
 <hr>
 <div id="swh-origin-search-results" class="mb-3" style="display: none;">
   <div class="table-responsive">
     <table class="table swh-table swh-table-striped" id="origin-search-results">
       <thead>
         <tr>
+          <th>Origin type</th>
           <th>Origin url</th>
-          <th>Visit type</th>
-          <th>Visit status</th>
+          <th>Archiving status</th>
         </tr>
       </thead>
       <tbody>
       </tbody>
     </table>
   </div>
 </div>
 <div class="swh-loading">
   <img src="{% static 'img/swh-spinner.gif' %}"></img>
   <p>Searching origins ...</p>
 </div>
 <p id="swh-no-result" style="display: none; white-space: pre;">
   <br/>
   No origins matching the search criteria were found.
 </p>
 
 <ul class="pagination justify-content-center swh-search-pagination">
   <li class="disabled page-item" id="origins-prev-results-button"><a class="page-link" href="#" tabindex="-1">Previous</a></li>
   <li class="disabled page-item" id="origins-next-results-button"><a class="page-link" href="#" tabindex="-1">Next</a></li>
 </ul>
 
 <script>
   swh.webapp.initPage('search');
 </script>
 {% endblock %}