It’s easy but time-consuming.
What you want are Polished Pet Charms. They come from Battle Pet World Quests, typically 15-20 Charms per battle.
You need to get into the habit of doing World Quests in Legion, BfA, Shadowlands, Dragonflight, and TWW every day. There are usually over 100 Charms available every day, so 30 days will give you 3000-5000 Charms.
You can even do them on multiple characters to get multiple times the reward each day.
Just open your map and find the World Quests that reward Charms.
There is an addon, PetCollector, in development at the moment. It is not released on Curseforge yet, but it works fine for listing which WQ reward Charms across all the expansions. You can download it from the WarcraftPets Discord, #addons channel. But you don’t need it, except to give a quick total of all Charms available now.
All or nearly all pets you can buy with Charms are also available at the AH for gold.
These days you can use
Magpie
https://magpie.wow-petguide.com
and Undermine Exchange
https://undermine.exchange/
to find best price across multiple realms. On Undermine, the price for thepet is shown on all realms at the bottom of the screen, for example, look to the bottom of
https://undermine.exchange/#us-area-52/82800-2933-8
and sort by Price.
Then put the gold in your Warbank andmake an alt on the target server. One of the Allied Races that start in Org or SW is obviously handiest. Buy and learn the pet with the alt.
P.S.
I forgot to mention Mission Tables from Legion, BfA, and Shadowlands. Charms are also available from missions there, if you have characters thathave established them.