Search
Consider reading the API Overview before you begin.
Perform relevant search over documents within your Engine.
The following search operations are done with your Engine Key (public search).
Engine Type | Supported? |
---|---|
Crawler-based Engine | YES |
API-based Engine | YES |
Search
Conduct read-only full-text search against all DocumentTypes within your Engine.
To specify a DocumentType, see the DocumentType API Reference.
GET
https://search-api.swiftype.com/api/v1/public/engines/search.json
POST
https://search-api.swiftype.com/api/v1/public/engines/search.json
- q
- required
- The query used for a prefix match. Queries shorter than a few characters may not return results.
- engine_key
- required
- The Engine Key used to look up the search engine to search.
- callback
- optional
- The name of a callback function in your client-side JavaScript. If provided, the results will be sent in JSONP format.
Example - Search an Engine for the query "brothers".
curl -X GET 'https://search-api.swiftype.com/api/v1/public/engines/search.json' \
-H 'Content-Type: application/json' \
-d '{
"engine_key": "YOUR_ENGINE_KEY",
"q": "brothers"
}'
Example Response
{
"records": {
"books": [
{
"title": "The Brothers Karamazov",
"author": "Fyodor Dostoyevsky",
"price": "14.95"
},
...
]
},
"info": {
"books": {
"query": "brothers",
"current_page": 1,
"num_pages": 1,
"per_page": 20,
"total_result_count": 18,
"facets": {}
}
},
"errors": {}
}
Multiple Search Options
The /search
endpoint has many different options.
You can combine them together at query time, however you see fit.
Example - A public search for "brothers" against the Engine Key associated with the
bookstore
Engine with various options.
curl -XGET 'https://search-api.swiftype.com/api/v1/public/engines/search.json' \
-H 'Content-Type: application/json' \
-d '{
"engine_key": "YOUR_ENGINE_KEY",
"q": "brothers",
"filters":{"books":{"in_stock":true,"genre":"fiction"}},
"per_page":5,
"page":1,
"fetch_fields":{
"books":["author","price"]
},
"highlight_fields":{
"books":{"title":{"size":60,"fallback":true}}
},
"search_fields":{
"books":["title"]
}
}'
Cross-domain requests with JSONP
JSONP makes it easier to execute searches and autocompletions from client-side JavaScript.
Specify the .json
extension to set the format to JSON and use JSONP.
Add a callback
parameter specifying the name of the function in your code to call with the results.
Example - JSONP search request
curl -X GET "https://search-api.swiftype.com/api/v1/public/engines/search.json"
-H 'Content-Type: application/json' \
-d '{
"engine_key": "YOUR_ENGINE_KEY"",
"q": "brothers",
"callback": "yourCallbackFunction"
}'
Example Response
yourCallbackFunction({
"records": {
"page": [
{
"body": "Band of Brothers DVD",
"external_id": "9508ace2e1ba669854eb49fbe9429952ff1a6d4c",
"sections": "",
"title": "Band of Brothers",
"updated_at": "2013-02-04T19:09:40Z",
"image": "",
"type": "post",
"url": "http://yoursite.com/band-of-brothers",
"popularity": 1,
"published_at": "2012-01-01T08:00:00Z",
"info": "",
"id": "5025a3036052f6b650000006",
"score": 3.1224604,
"highlight": {
"title": "Band of <em>Brothers</em>",
"body": "Band of <em>Brothers</em> DVD"
},
}
]
},
"info": {
"page": {
"query": "brothers",
"current_page": 1,
"num_pages": 1,
"per_page": 20,
"total_result_count": 1,
"facets": {}
}
}
})
Supported Field Types
Type | Searching |
---|---|
string |
Yes |
text |
Yes |
enum |
Yes |
integer |
No |
float |
No |
date |
No |
location |
No |
Stuck? Looking for help? Contact support or check out the Site Search community forum!