Skip to content Skip to navigation

Use Google Instant Indexing API with SEOPress

Note that you must first create a Google Console project before you can follow this tutorial. More info on the official documentation.
Officially, the Google Indexing API should only be used to crawl pages that contain structured data of type JobPosting or BroadcastEvent in a VideoObject element. This can work for any type of URL, but use sparingly and only if you have major indexing concerns.

Activate the Google Indexing API from Google Cloud Console

Sign in to Google Cloud Console.

Using the main navigation menu (click the hamburger icon), click on APIs & Services, Library, search for Web Search Indexing API (indexing.googleapis.com), click on it from the search results, and enable it.

Google Indexing API activation
Google Indexing API activation

You will be redirect after the activation to this API.

Google Indexing API Credentials
Google Indexing API Credentials

From the left menu, click on Credentials, then from the right panel, click on the Create credentials button. Choose the “Service account” option.

Create a service account for the Indexing API
Create a service account for the Indexing API

The first step is to enter a name and a description of your choice, then click Create.

Create a service account - step 1
Create a service account: step 1

Second step, choose Owner from the dropdown list and click Continue button.

Create a service account - step 2
Create a service account: step 2

Simply click Done at last step.

Create a service account - step 3
Create a service account: step 3

From the Service accounts table, click on the newly service account to edit it.

Service accounts list for Indexing API
Service accounts list for Indexing API

Click on Keys tab, Add key, Create a new key.

Service account edition, Keys tab - Google Indexing API
Service account edition, Keys tab: Google Indexing API
Service account edition, Add key - Google Indexing API
Service account edition, Add key: Google Indexing API

From the popup, choose JSON as key type and click Create.

Create your private key for Google Indexing API
Create your private key for Google Indexing API

Your browser will start downloading a JSON file.

Close the popup.

Add your service account as a site owner to Google Search Console

Now go Google Search Console.

Select the desired website property from the list.

Then, from the left navigation panel, click on Settings.

Under Property settings, click on Users and permissions.

Google Search Console settings
Google Search Console settings

Click Add user button.

Enter the email address provided by the Service account previously created.

Make sure to select “Owner” from the Permission field to prevent 403 error when submitting the URLs for indexing.
Google Search Console settings - New user
Google Search Console settings: New user
This email can be retrieved from Google Cloud Console, IAM & Admin, Service Accounts, your service account, Details tab. Or by opening your downloaded JSON file, client_email line.

Choose Owner and click Add.

Sign in to your WordPress admin and go to SEO, Instant Indexing settings page, Settings tab.

Open your JSON file previously downloaded with a text editor (eg: Notepad on Windows or TextEdit on Mac).

Select all it’s content with CTRL+A (CMD+A on Mac) and copy it.

Then paste it to Google Indexing API key field.

Save changes.

Google Search Console settings tab, SEOPress PRO
Google Search Console settings tab, SEOPress PRO

Index your content

From SEO, Instant Indexing, General tab, select a search engine, the action to run, and enter up to 100 URLs to the “Submit URLs for indexing” textarea field.

Instant indexing general tab - SEOPress Free
Instant indexing general tab: SEOPress Free

Then click Submit URLs to Google & Bing.

The page reloads.

You should see a success message in the response section if all went well.

Since SEOPress 10.4, each submitted URL is also recorded in the History tab, with the answer of each search engine. Use the See every submission in the History tab link below Latest URLs submitted to open it.

Automatically request indexing with IndexNow API

Since version 5.5 of SEOPress, you can now automatically notify search engines each time a post, page or post type is published or updated. Since SEOPress 10.4, moving a published post, page or post type to the trash also notifies search engines, at the URL it was published at.

Automatic submission uses the IndexNow API only (Bing, Yandex): Google is never notified automatically, even when it is selected in the General tab. To ask Google to update or remove a URL, submit it manually from the General tab, with Update URLs or Remove URLs as Google action.

To activate this option, just go to the Setting tab of Instant Indexing and check “Enable automatic URL submission for IndexNow API”.

Save changes.

That’s it!

Instant Indexing > Settings tab - SEOPress Free
Instant Indexing > Settings tab: SEOPress Free

Check the submission history

Since SEOPress 10.4, every URL submitted through Instant Indexing is recorded in a history: manual submissions from the General tab and automatic submissions sent when content is published, updated or moved to the trash, to Google and to IndexNow (Bing / Yandex). Use it to check whether a URL was submitted, when, and what the search engine answered.

A request asks a search engine to crawl the URL again: it does not guarantee indexing. An accepted request only means the search engine received it.

Where to find the history

  • For the whole site: go to SEO, Instant Indexing, History tab. From the General tab, the See every submission in the History tab link below Latest URLs submitted opens it too.
  • For one post, page or post type: in the editor, open the SEO metabox, Content Analysis tab, Indexing history sub-tab. It is displayed when the Instant Indexing feature is enabled.

The Latest indexing request block of the General tab is still there: it shows the full answer of the last submission only, and it is replaced by the next one, automatic submissions included. The history keeps every submission.

The History tab

The Submission history table lists every submitted URL, newest first, 20 rows per page. Each URL is listed once per search engine: a batch of 100 URLs sent to Google and to Bing / Yandex gives 200 rows.

Column What it shows
Date Date and time of the submission, in the date format, time format and time zone of your site.
URL The submitted URL. Click it to open it in a new tab.
Search engine Google (Google Indexing API) or Bing / Yandex (IndexNow).
Source Manual: sent from the General tab. Automatic: sent by automatic submission when content was published, updated or trashed. A dash means the source is unknown (see below).
Status The answer of the search engine, see the next table.

Statuses

Status Meaning
Accepted (HTTP 200), Accepted (HTTP 202)… The search engine received the request (2xx HTTP code). For IndexNow, 202 means the key validation is pending.
Failed (HTTP 403), Failed (HTTP 429)… The search engine answered with an error code. The error message it returned is displayed below the status.
Not sent The request got no HTTP answer, for example because the API key is missing or invalid, or because the connection failed. The reason is displayed below the status when it is known.

Google answers for each URL of a batch, so URLs of the same batch can have different statuses. IndexNow answers once for the whole batch, so every URL of a batch sent to Bing / Yandex shows the same status.

To fix an error, see the FAQ below and the Limits and responses section of the IndexNow guide.

Search and filter

  • Search URLs: type part of a URL, for example a slug, to list the rows whose URL contains it.
  • Source: choose All, Manual or Automatic.

Below the table, the number of rows matching your search is displayed, with the Previous and Next buttons when there is more than one page.

Clear the history

The Clear history button is displayed below the table when the history contains rows and no search or filter is applied.

  1. Click Clear history.
  2. In the confirmation window, click Clear history again, or Cancel.
Every recorded submission is deleted, including the ones displayed in the post editor. This cannot be undone. The Latest indexing request block of the General tab is kept.

The history of a post

In the editor of a post, page or post type, open the SEO metabox, Content Analysis tab, Indexing history sub-tab. It lists the latest 20 requests sent for this content, newest first, with the same Date, Search engine, Source and Status columns. The submitted URL is displayed under the date.

It includes the automatic submissions of this content, and the manual submissions of a URL of your site that WordPress matches to this content.

  • Refresh reloads the list, for example after you published or updated the content.
  • See the whole history opens the History tab. This link is only displayed to users who can manage the Instant Indexing settings.

When nothing was sent for this content yet, the sub-tab displays “No request sent for this content yet.”, followed by a hint on automatic submission.

Who can see the history

  • History tab: users who can manage the Instant Indexing settings page, that is administrators, and the roles you allowed for Instant Indexing in SEO, Advanced, Security tab, SEO settings pages: allowed roles.
  • Indexing history sub-tab: users who can edit the content, unless the Content Analysis tab is hidden for their role (Content Analysis: blocked roles, in the same Security tab).

What is recorded

  • Every URL SEOPress sends to Google or to IndexNow, manually or automatically, with the answer of the search engine.
  • Automatic submission uses IndexNow only: Google rows always come from manual submissions. If only Google is selected as search engine, automatic submissions send nothing and record nothing.
  • A submission stopped before any request is sent (no URLs to submit, no search engine selected, or no API key at all) is not recorded. Its error is displayed under Latest indexing request in the General tab.
  • After the update to SEOPress 10.4, the last request recorded before the update (the one shown under Latest indexing request) is copied once into the history, when its date can be read. Its Source may show a dash, because older versions did not record whether it was manual or automatic.

How long rows are kept

The latest 5,000 rows are kept. When a new submission is recorded, the oldest rows beyond this limit are removed automatically. The History tab reminds you of the limit above the table.

For developers: the seopress_instant_indexing_history_max_rows filter changes the number of rows kept (return 0 to stop recording), the seopress_instant_indexing_history_recorded action runs your code after each submission, and the history can be read and cleared with the SEOPress REST API.

FAQ

Is there any quotas?

Yes! 200 requests per day for Google, 10,000 for Bing.

Is this completely Free?

Yes, Google and Bing doesn’t no charge anything.

Should I still use a XML sitemaps?

Yes, absolutely! These APIs are still experimental and doesn’t replace your XML sitemaps.

How long do I have to wait before seeing my URLs in the search results?

As always it depends on search engines but it should take few minutes, max few hours in general.

Will this improve my ranking?

Search engines will crawl and index your content faster. However, like any URL, it depends of your content, backlinks etc.

401 error?

You Google JSON key is probably incorrect from the Settings tab. Delete it and add it again. Save changes.

403 error?

Make sure the Google Cloud user added to Google Search Console has the correct permissions: “Owner”.