[Dúvida/Iniciante] O que impede de usar API Privada de um site?

Primeiramente... Não sei nada sobre programação front-end/back-end e não sou programador, só uso Python para facilitar meu trabalho em algumas atividades e tenho interesse no assunto.

Agora vamos aos fatos... Algumas atividades no navegador eu automatizei utilizando Python + Selenium. Funciona? Funciona. Mas não é aquela solução elegante.

Descobri essa tal de API e que muitos sites fornecem uma (paga ou gratuita) para ser utilizada. Nesses casos, já entendi como funciona e beleza. Todos saem felizes.

Um dos sistemas que utilizamos na empresa. Até onde se sabe, não possui uma API Pública. O que impede de utilizar a mesma do front-end? Pois ao meu ver, funcionaria da mesma forma que uma API Pública. Você tem uma forma de login, recebe um token e navega pelo site. A outra questão seria... Tem como utilizar essa API? Como que faz para descobrir? Ou o que eu devo estudar para entender isso?

Ou a pergunta de forma mais ampla e para contextualizar. O que impede (além dos termos de uso) usar a API do front-end do Twitter, por exemplo, no lugar da pública? Considerando que o pessoal faz web scraping com Python + Selenium que também seria contra os termos de uso.

Existem vários pontos na sua pergunta. Por definição, quando falo "API Privada" me refiro a uma API que é acessível pela internet mas não tem documentação.

Até onde se sabe, não possui uma API Pública.

Vários websites usam APIs para comunicar o front-end com o back-end, isso se tornou comum hoje em dia. Uma API Pública é uma API que é exposta e documentada para desenvolvedores externos conseguirem interagir com o seu app, porém a API do seu app não precisa ser exatamente documentada para você mesmo usá-la.

O que impede de usar uma API privada de um app?

Uma API usada num site várias vezes não tem nada que impeça você de acessá-la, pois seu navegador vai fazer isso ao usar o app, porém, por não estar documentada publicamente, a utilização será mais difícil, pode exigir alguma autenticação específica, acontecer alguma mudança que quebra os clients, retornar dados que não fazem muito sentido pela falta de documentação, abfuscar código do app e dentre muitas outras coisas podem dificultar alguém deusar uma API privada.

Tem como utilizar essa API? Como que faz para descobrir? Ou o que eu devo estudar para entender isso?

Sim, tem como. Usar uma API privada geralmente requer uma investigação para aprender como a API funciona, você pode fazer isso através de engenharia reversa no site ou app, analisando quais requisições o seu navegador faz, quais dados são enviados e quais dados são recebidos. Vale notar que acessar uma API privada sem autorização pode violar os termos de serviços do app.

API pública ou privada não tem haver com ter documentação ou se essa documentação ela é acessível ou não. Toda API tem condições de "saber" a origem das requisições, ou seja, a API do Twitter sabe quando as requisições estão vindo do site dela ou não, e pode simplesmente barrar as requisições que não estão na lista de clientes autorizados. É por isso que tem gente que usa Selenium (ou similar) para contornar isso. Além de barrar quem "não está na lista", pode colocar limites mesmo para os autorizados como 1000 requisições por dia, ou 10 requisições por minuto e por aí vai.