Quando há resultados, a saída é uma lista (JSON, baseada em seu comentário). Para consultas sem resultados, a saída deve ser exatamente a mesma. A lista simples tem 0 itens.
Então, se sua resposta é normalmente esta:
{
"results": [
{
"name": "Pancakes",
....
},
{
"name": "French Fries",
....
}
]
}
Então, para uma consulta com 0 resultados, deve ser isso:
{
"results": []
}
Se você também incluir metadados sobre quantas "páginas" de resultados existem, links para essas "páginas", etc., sugiro dizer que há 1 "página".
O status HTTP deve ser o mesmo de quando há resultados - 200 OK
.
204 No Content
também pode parecer uma opção, mas não é porque você está de fato retornando "conteúdo" - a lista vazia. Se você achar que uma lista vazia não conta como "conteúdo", e se você alterar a resposta para oferecer sugestões de ortografia? O núcleo da resposta ainda será uma lista vazia, mas agora há ainda mais "conteúdo".
Para informações mais úteis sobre os códigos de status HTTP, jpmc26, sua resposta vale a pena ser lida.