O termo Z39.50 designa um protocolo desenvolvido pela NISO (National Information Standards Institute) para pesquisa e recuperação de informação, que permite aceder a catálogos de outras instituições por meio da mesma interface do catálogo no computador de uma determinada instituição.
Z39.50 é um protocolo que especifica as estruturas de dados e regras de intercâmbio que permitem que uma máquina cliente possa pesquisar na bases de dados de uma máquina servidor e obter registos que são identificados como um resultado dessa pesquisa.
O nome Z39.50 vem do fato de que o NISO, o American National Standards Institute (ANSI) aprovaram as normas de desenvolvimento e organização que servem as bibliotecas, serviços de publicação e informação. Essa aprovação foi na comissão Z39 de ANSI. As normas NISO são numeradas sequencialmente e Z39.50 é o quinquagésimo padrão desenvolvido pela NISO. A versão atual do Z39.50 foi adoptada em 1995, substituindo, assim, versões anteriores adotadas em 1992 e 1988. É por vezes referido como Z39.50 Versão 3. Z39.50 teve as suas raízes no modelo OSI da década de 1980. Dentro do modelo OSI, ele é um protocolo da camada de aplicação. Mas neste momento o único serviço de camada inferior que ela exige é um serviço confiável como o TCP. Um número de porta TCP para Z39.50 é registado, e há um pedido de comentário (RFC) que especifica como usar o Z39.50 em vez do TCP.
O protocolo é monitorizado e orientado à conexão. O protocolo define as interações entre duas máquinas apenas. Enquanto alguns grupos estão agora a desenvolver aplicações de pesquisa de difusão, que permitem que um cliente possa procurar vários servidores em paralelo, estas são aplicações que são construídas dentro do Z39.50 e utilizam múltiplas conexões Z39.50 em simultâneo em várias máquinas. O Z39.50 não especifica uma interface de programação de aplicações (API) para os serviços do protocolo sobre o cliente ou o servidor. Trata-se apenas das interações entre as máquinas cliente e servidor. Além disso, Z39.50 não resolve nenhum dos problemas envolvidos em interfaces do utilizador que o cliente pode apresentar ou quaisquer das questões envolvidas na gestão de base de dados no servidor. O modelo de arquitetura básica que o Z39.50 usa é a seguinte: Um servidor ou muitos registos de bases de dados. Associada a cada base de dados estão um conjunto de pontos de acesso (índices) que podem ser utilizados para a pesquisa. Esta é uma visão muito mais abstrata que uma base de dados que se encontra no SQL, por exemplo. Uma das funções básicas do Z39.50 permite que o cliente, possa transmitir uma pesquisa para o servidor. A pesquisa produz um conjunto de registos, chamados de conjunto de resultados, que são mantidos no servidor. O resultado de uma pesquisa é um relatório do número de registos que compõem o conjunto de resultados. A norma é omissa quanto ao conhecimento se o conjunto de resultados é materializado ou mantido como um conjunto de índices de registos, e de como o conjunto de resultados podem interagir com as atualizações da base de dados que podem estar a ocorrer no servidor. Os conjuntos de resultados podem ser combinados ou ainda restringidos por pesquisas posteriores. Note que isto é substancialmente diferente dos servidores SQL, que não empregam conjuntos de resultados.
Os registos do conjunto de resultados podem ser posteriormente recuperados pelo cliente usando solicitações PRESENT. O pedido PRESENT oferece opções elaboradas para controlar o conteúdo e o formato dos registos que são retornados. O pedido PRESENT indica especificamente quais os registos de um conjunto de resultados que devem ser retornados.
O Z39.50 também contém funções para a gestão da pesquisa. Por exemplo, um servidor pode fornecer relatórios do progresso de uma pesquisa ativa, ou pode pedir ao cliente autorização para continuar a pesquisa intensiva de recursos. Um cliente pode abortar uma pesquisa ativa. O relatório de conclusão da pesquisa também pode retornar informações complementares tais como quantos registos se enquadram em parte do termo de pesquisa.
O Z39.50 tem recursos que gerem um conjuntos de resultados, que classificam conjuntos de resultados, podem abrir e fechar as conexões, e também tem um mecanismo geral chamado serviços estendidos. Esses serviços estendidos foram originalmente concebidos como um meio de salvar conjuntos de resultados em todas as sessões, imprimi-los ou fazer o processamento de correio electrónico no servidor, ou registar e gerir consultas que seriam executadas periodicamente no servidor.