En la API de CoinGecko::
/asset_platforms
Te da un listado de ids para las cadenas , con 'binance-smart-chain' para BSC y para ethereum es 'ethereum'.
En la API el comando es /coins/{id}/contract/{contract_address} y no es /coins/{id}
Los comandos para BUSD, que es BEP20 y ERC20 a la vez son:
coins/binance-smart-chain/contract/0xe9e7cea3dedca5984780bafc599bd69add087d56
coins/ethereum/contract/0x4fabb145d64652a948d72533023f6e7a623c7c53
La estrategia para este token concreto BUSD es hacer un /coins/binance-usd para obtener los contratos y luego los dos /coins/{id}/contract/{contract_address} una vez identificado que tiene ambas cadenas.
En el caso de que /coins/{id}/contract/{contract_address} no estuviera en tu librería (no suelen incluir toda la API REST) puedes intentar modificar esa librería.
Yo lo que hago es pasar de la librería si no me sirve. Según desarrollo capturo directamente con llamadas json-RPC a la API y si esas llamadas por el diseño de la aplicación fueran bloqueantes, uso ajax y jQuery para que tras la carga de la página se vayan rellenando los tags asíncronamente o incluso que la base de datos se actualice desde ajax (con un POST al controller de la tabla y pasándole la cookie de autoridad). Esto es un poco cutrillo, pero efectivo y nunca me ha dado problemas.