Смотрите, у вас должно быть обязательное поле, у меня на проектах это поле номер телефона. Но может быть и email. Еще четко определитесь, куда Вы пишите данные, в сделку CRM или в клиента CRM. Тут много разных вариаций, опишу наиболее распространенный.
1. Я говорю про пример классической CRM - с отдельной воронкой лидов и отдельной воронкой сделок. В воронке сделок, должно быть обязательное поле - клиент. Это может быть как контакт, так и компания. Как вы уже написали, можно получать данные по rest, а можно и вебхуком, что немного проще. Если используете схему, описанную выше, то сначала ищете id клиента по уникальному ключу (email/phone/etc) потом ищете активные сделки с этим клиентом. И далее методом crm.deal.get получаете поля сделки. Если нужно прочитать поля контакта, тогда crm.contact.get. таким образом вы получите список полей из сущности в crm в формате json и далее уже можете выводить их как удобно.
2. Если у вас упрощенная crm, допустим нет воронки лидов, а используется сразу воронка лиды+сделки, и вы не заводите контакт в базу crm, тогда ищете по тому же ключу (почта/телефон/итд) в воронке сделок методом crm.deal.list и там в параметре filter указываете ключ.
Думаю идея понятна. Чтобы не делать множество запросов - прочитайте про batch.
В зависимости от загруженности сайта, рекомендую ставить кэширование на полученные данные. Например в битрикс облако, если не ошибаюсь, есть лимит 3 запроса в сек, в коробке с лимитами не встречался. Потом в бан могут отправить. Поэтому по возможности включите кэширование этих запросов, чтобы каждый раз не дергать crm , например когда пользователь обновляет страницу, а то так и задудосить может.