API:Search
![]() | This page is part of the MediaWiki Action API documentation. |
MediaWiki version: | ≥ 1.11 |
GET request to perform an advanced search for wiki pages by title or content text match.
API documentation
![]() | The following documentation is the output of Special: |
list=search (sr)
- This module requires read rights.
- This module can be used as a generator.
- Source: MediaWiki
- License: GPL-2.0-or-later
Perform a full text search.
- srsearch
Search for page titles or content matching this value. You can use the search string to invoke special search features, depending on what the wiki's search backend implements.
- This parameter is required.
- srnamespace
Search only within these namespaces.
- Values (separate with | or alternative): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 90, 91, 92, 93, 100, 101, 102, 103, 104, 105, 106, 107, 710, 711, 828, 829, 1198, 1199, 2600, 5500, 5501
- To specify all values, use *.
- Default: 0
- srlimit
How many total pages to return.
- Type: integer or max
- The value must be between 1 and 500.
- Default: 10
- sroffset
When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.
- Type: integer
- The value must be no less than 0.
- Default: 0
- srqiprofile
Query independent profile to use (affects ranking algorithm).
- classic
- Ranking based on the number of incoming links, some templates, page language and recency (templates/language/recency may not be activated on this wiki).
- classic_noboostlinks
- Ranking based on some templates, page language and recency when activated on this wiki.
- empty
- Ranking based solely on query dependent features (for debug only).
- wsum_inclinks
- Weighted sum based on incoming links
- wsum_inclinks_pv
- Weighted sum based on incoming links and weekly pageviews
- popular_inclinks_pv
- Ranking based primarily on page views
- popular_inclinks
- Ranking based primarily on incoming link counts
- engine_autoselect
- Let the search engine decide on the best profile to use.
- One of the following values: classic, classic_noboostlinks, empty, engine_autoselect, popular_inclinks, popular_inclinks_pv, wsum_inclinks, wsum_inclinks_pv
- Default: engine_autoselect
- srwhat
Which type of search to perform.
- One of the following values: nearmatch, text, title
- srinfo
Which metadata to return.
- Values (separate with | or alternative): rewrittenquery, suggestion, totalhits
- Default: totalhits|suggestion|rewrittenquery
- srprop
Which properties to return:
- size
- Adds the size of the page in bytes.
- wordcount
- Adds the word count of the page.
- timestamp
- Adds the timestamp of when the page was last edited.
- snippet
- Adds a snippet of the page, with query term highlighting markup.
- titlesnippet
- Adds the page title, with query term highlighting markup.
- redirecttitle
- Adds the title of the matching redirect.
- redirectsnippet
- Adds the title of the matching redirect, with query term highlighting markup.
- sectiontitle
- Adds the title of the matching section.
- sectionsnippet
- Adds the title of the matching section, with query term highlighting markup.
- isfilematch
- Adds a boolean indicating if the search matched file content.
- categorysnippet
- Adds the matching category name, with query term highlighting markup.
- score
- Deprecated. Ignored.
- hasrelated
- Deprecated. Ignored.
- extensiondata
- Adds extra data generated by extensions.
- Values (separate with | or alternative): categorysnippet, extensiondata, isfilematch, redirectsnippet, redirecttitle, sectionsnippet, sectiontitle, size, snippet, timestamp, titlesnippet, wordcount, hasrelated, score
- Default: size|wordcount|timestamp|snippet
- srinterwiki
Include interwiki results in the search, if available.
- Type: boolean (details)
- srenablerewrites
Enable internal query rewriting. Some search backends can rewrite the query into another which is thought to provide better results, for instance by correcting spelling errors.
- Type: boolean (details)
- srsort
Set the sort order of returned results.
- One of the following values: create_timestamp_asc, create_timestamp_desc, incoming_links_asc, incoming_links_desc, just_match, last_edit_asc, last_edit_desc, none, random, relevance, user_random
- Default: relevance
- Search for meaning.
- api.php?action=query&list=search&srsearch=meaning [open in sandbox]
- Search texts for meaning.
- api.php?action=query&list=search&srwhat=text&srsearch=meaning [open in sandbox]
- Get page info about the pages returned for a search for meaning.
- api.php?action=query&generator=search&gsrsearch=meaning&prop=info [open in sandbox]
GET request
utf8
in the get request above to see the difference.Response
{
"batchcomplete": "",
"continue": {
"sroffset": 10,
"continue": "-||"
},
"query": {
"searchinfo": {
"totalhits": 5060
},
"search": [
{
"ns": 0,
"title": "Nelson Mandela",
"pageid": 21492751,
"size": 196026,
"wordcount": 23664,
"snippet": "<span class=\"searchmatch\">Nelson</span> Rolihlahla <span class=\"searchmatch\">Mandela</span> (/mænˈdɛlə/, Xhosa: [xoliɬaˈɬa <span class=\"searchmatch\">manˈdɛla</span>]; 18 July 1918 – 5 December 2013) was a South African anti-apartheid revolutionary,",
"timestamp": "2018-07-23T07:59:43Z"
},
{
"ns": 0,
"title": "Death of Nelson Mandela",
"pageid": 41284488,
"size": 133513,
"wordcount": 13512,
"snippet": "On December 5, 2013, <span class=\"searchmatch\">Nelson</span> <span class=\"searchmatch\">Mandela</span>, the first President of South Africa to be elected in a fully representative democratic election, as well as the country's",
"timestamp": "2018-07-19T17:30:59Z"
}
...
]
}
}
Sample code
Python
#!/usr/bin/python3
"""
search.py
MediaWiki API Demos
Demo of `Search` module: Search for a text or title
MIT License
"""
import requests
S = requests.Session()
URL = "https://en.wikipedia.org/w/api.php"
SEARCHPAGE = "Nelson Mandela"
PARAMS = {
"action": "query",
"format": "json",
"list": "search",
"srsearch": SEARCHPAGE
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
if DATA['query']['search'][0]['title'] == SEARCHPAGE:
print("Your search page '" + SEARCHPAGE + "' exists on English Wikipedia")
PHP
<?php
/*
search.php
MediaWiki API Demos
Demo of `Search` module: Search for a text or title
MIT License
*/
$searchPage = "Nelson Mandela";
$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
"action" => "query",
"list" => "search",
"srsearch" => $searchPage,
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
if ($result['query']['search'][0]['title'] == $searchPage){
echo("Your search page '" . $searchPage . "' exists on English Wikipedia" . "\n" );
}
JavaScript
/*
search.js
MediaWiki API Demos
Demo of `Search` module: Search for a text or title
MIT License
*/
var url = "https://en.wikipedia.org/w/api.php";
var params = new URLSearchParams({
action: "query",
list: "search",
srsearch: "Nelson Mandela",
format: "json",
origin: location.origin
});
fetch(`${url}?${params}`)
.then(function(response){return response.json();})
.then(function(response) {
if (response.query.search[0].title === "Nelson Mandela"){
console.log("Your search page 'Nelson Mandela' exists on English Wikipedia" );
}
})
.catch(function(error){console.log(error);});
MediaWiki JS
/*
search.js
MediaWiki API Demos
Demo of `Search` module: Search for a text or title
MIT License
*/
var params = {
action: 'query',
list: 'search',
srsearch: 'Nelson Mandela',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
if ( data.query.search[ 0 ].title === 'Nelson Mandela' ) {
console.log( "Your search page 'Nelson Mandela' exists on English Wikipedia" );
}
} );
Possible errors
Code | Info |
---|---|
nosrsearch | The srsearch parameter must be set. This was param-search before 1.17 |
search-text-disabled | text search is disabled. |
search-title-disabled | title search is disabled. |
search-error | search error has occurred |
Parameter history
- v1.24: Deprecated
score
,hasrelated
- v1.23:
- Removed
srredirects
. Redirects are always included. - Introduced
srinterwiki
- Removed
- v1.22: Introduced
srbackend
- v1.17: Introduced
nearmatch
,score
,titlesnippet
,redirecttitle
,redirectsnippet
,sectiontitle
,sectionsnippet
,hasrelated
- v1.16: Introduced
srinfo
,srprop
Additional notes
- Depending on which search backend is in use, how
srsearch
is interpreted may vary. On Wikimedia wikis which use CirrusSearch, see Help:CirrusSearch for information about the search syntax.